-PR-
解決済み

C言語のsscanf関数の上手な使い方2

  • すぐに回答を!
  • 質問No.61267
  • 閲覧数2028
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 20% (2/10)

質問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部分をどのように書いたらよいか分かりません。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル8

ベストアンサー率 53% (14/26)

基本的にあっていると思います。基本的にというのは, 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$
*/
お礼コメント
yasu1

お礼率 20% (2/10)

ご回答ありがとうございます。
単純なミスでした。
sscanfで、&i1, &i2になっていませんでした。
急いでいたので、ありがとうございました。
投稿日時 - 2001-04-09 09:10:04

その他の回答 (全1件)

  • 回答No.1
レベル8

ベストアンサー率 21% (7/32)

物の本を読むとscanf系は使わないほうがいいって出てませんか?

想定外の文字がくると動作がおかしいから かな
自前で関数を作ったほうがいいと思います。

文字列の長さのチェックもしてくれないし(^^


このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ