質問NO.60489の追加です。
C言語で、
char buf[256] = "\"aa, aa\",100,\"bb bb\",200,\"cc-cc\";
char c1[10],c2[10],c3[10];
int i1,i2;
のとき、
c1 = "aa, aa"
c2 = "bb bb"
c3 = "cc-cc"
i1=100
i2=200
に読み込みたいのですが、
sscanf(buf,"\"%[^\"]\",%d,\"%[^\"]\",%d,\"%[^\"]\"",c1,i1,c2,i2,c3);
では失敗します。
sscanfのformat部分をどのように書いたらよいか分かりません。
No.2ベストアンサー
- 回答日時:
基本的にあっていると思います。
基本的にというのは, char buf[]...の行に"が1個足りない。sscanfでi1, i2がそれぞれポインタで呼ばれていない。の2点が間違っていると思います。それ以外では間違っていないからです。ちょっと質問なのですが, c1に"も含めるのですか?そうすると, ちょっとわかりません。
自分がやった結果をちょっと長いですが載せたいと思います。
/* sscanf.c */
#include<stdio.h>
int main(void){
char buf[256] = "\"aa, aa\",100,\"bb bb\",200,\"cc-cc\""; /* ちょっと変更を加えた。 */
char c1[10],c2[10],c3[10];
int i1,i2;
sscanf(buf,"\"%[^\"]\",%d,\"%[^\"]\",%d,\"%[^\"\"",c1,&i1,c2,&i2,c3); /* ちょっと変更を加えた。*/
puts(c1);
puts(c2);
puts(c3);
printf("%d, %d", i1, i2);
return 0;
}
/* 実行結果 $はプロンプト
$ sscanf
aa, aa
bb bb
cc-cc
100, 200$
*/
ご回答ありがとうございます。
単純なミスでした。
sscanfで、&i1, &i2になっていませんでした。
急いでいたので、ありがとうございました。
No.1
- 回答日時:
物の本を読むとscanf系は使わないほうがいいって出てませんか?
想定外の文字がくると動作がおかしいから かな
自前で関数を作ったほうがいいと思います。
文字列の長さのチェックもしてくれないし(^^
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルデーターの並び替え 5 2022/08/06 09:59
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- Excel(エクセル) 【!】Excel 2つの条件付き書式が反映されません。。 5 2023/07/14 16:47
- 数学 a1,a2, a3をベクトル空間Vのベクトルとする。a1+a2,a2+a3,a3+a1が一次独立のと 2 2022/10/02 15:55
- 宇宙科学・天文学・天気 反物質がほとんどなくて、ほぼ物質だけの宇宙になったのは偶然ですか? 3 2022/11/13 14:37
- 宇宙科学・天文学・天気 反物質がほとんどなくて、ほぼ物質だけの宇宙になったのは偶然ですか? 1 2022/07/04 16:02
- マウス・キーボード Pc切替器が動作しません。理教えてください。よろしくお願いします。 4 2023/05/10 15:43
- 数学 整数問題について 3 2023/07/10 15:41
- 電気・ガス・水道 ソーラーパネル初心者です 1 2023/01/01 13:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
C言語のfor文です。 繰り返しの...
-
文字列から空白を取り除きたい...
-
atoi( ) の反対をやりたい
-
charでの計算?
-
DPマッチング
-
間接操作のレベルとは
-
c言語でユーザ関数を利用して入...
-
バイトスワップをやりたい
-
sprintfに同じ変数は使えるか
-
CStringをwchar_tに変換したい
-
strtok関数 自作
-
sprintf関数の作り方
-
C言語、リダイレクト
-
重複文字を出力させない!!
-
Linuxでフォルダ内全ファイル名...
-
ユニコード文字列の分割
-
C言語です
-
C言語の入力した文字を反転させ...
-
3桁区切(コンマ)記号をつけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
charでの計算?
-
C言語のfor文です。 繰り返しの...
-
charからLPTSTRへの変換方法
-
文字列から空白を取り除きたい...
-
C言語の入力した文字を反転させ...
-
'const char *' 型は 'char *' ...
-
配列をnビットシフトする
-
str系関数を使わずに二つの文字...
-
int main()の・・・
-
atoi( ) の反対をやりたい
-
CStringをwchar_tに変換したい
-
c++ 文字列を入力して、一文字...
-
switch文で文字を比較すること...
-
干支のプログラム
-
3桁区切(コンマ)記号をつけ...
-
絶対パスからのファイル名の切...
-
間接操作のレベルとは
-
間接参照のレベルが異なっています
-
型変換
おすすめ情報