2016-04-06 11 views
2

まず、私は初心者であることを明示したいと思います。これは愚かな質問かもしれません。フォーマット指定子%nは文字数を返しません

,が見つかるまで文字列を読み込んで別の文字列に格納したいと考えています。私はまた、いくつの文字が読み込まれているか知りたい。いくつかの文字がnewstrに格納されていた場合でも、

sscanf(str, "%[^,]s %n ", newstr, &number); 

私はそれは関係なく、私の入力の0を出力番号を印刷しようとすると:これは私がsscanfでやっているものです。

[^,]のサブ指定子には、%nというように問題があるように見えます。

+0

あなたは警告でコンパイルしましたか。 'number'の型は何ですか? –

+0

私は警告でコンパイルしました。数値は整数です。 – Rrmm

+0

[ask]を参照し、[mcve]を入力してください。 – Olaf

答えて

1

'、'が見つかるまで文字列を読み込んで別の文字列に格納したいと考えています。私はまた、いくつの文字が読み込まれているか知りたい。

sは不要です。これは"%[^,]"指定子の一部ではありません。また、末尾の" "は目的を果たさない。入力の長さも制限する必要があります。コードが埋め込まれていないことがわかっていない限り、newstrは使用しないでください。

char str[100]; 
int number = 0; 

// sscanf(str, "%[^,]s %n ", newstr, &number); 
sscanf(str, "%99[^,], %n", newstr, &number); 

if (number) Success(); 
else Fail(); // do not use newstr 
関連する問題