sscanf操作文字列と整数の違い
1353 ワード
今日テストしてみると、sscanf操作文字列と整数型はフォーマットに違いがあることがわかりました.次に見てみましょう.次の2つの例は、文字列に対応する12347の数字を取ります.
まず、操作文字列を見てみましょう.
ここで12347は文字列buf 1から取り出したものです.
完全な操作:
ここでは型抜きを使います.
上の2つのsscanfでは対応するフォーマットが異なり、文字列のフォーマットは明らかに簡単で、フォーマット全体が複雑です.場合によっては取捨選択をする.
テストを見てみましょう.
印刷エラーです.これは、操作が整っている場合、このような簡単なフォーマットは望ましくないことを証明します.
もう一度見てください.
印刷が多くなりましたが、これも問題があります.
やっと分かった.
まず、操作文字列を見てみましょう.
int main()
{
char buf[100] = "F:12347_121|C:1223244_2323|S:547656|";
char buf1[100] = "";
sscanf(buf, "%*[^:]:%[^_]", buf1);
printf("%s
", buf1);
return 0;
}
印刷:12347ここで12347は文字列buf 1から取り出したものです.
完全な操作:
int main()
{
char buf[100] = "F:12347_121|C:1223244_2323|S:547656|";
int a = 0;
sscanf(buf,"F:%d_%*[^|]|C:%*d_%*d|S:%*[^|]|",&a);
printf("%d
", a);
return 0;
}
印刷:12347ここでは型抜きを使います.
上の2つのsscanfでは対応するフォーマットが異なり、文字列のフォーマットは明らかに簡単で、フォーマット全体が複雑です.場合によっては取捨選択をする.
テストを見てみましょう.
int main()
{
char buf[100] = "F:12347_121|C:1223244_2323|S:547656|";
int a = 0;
sscanf(buf, "%*[^:]:%[^_]", &a);
printf("%d
", a);
return 0;
}
印刷:875770417印刷エラーです.これは、操作が整っている場合、このような簡単なフォーマットは望ましくないことを証明します.
もう一度見てください.
int main()
{
char buf[100] = "F:12347_121|C:1223244_2323|S:547656|";
char buf1[100] = "";
sscanf(buf,"F:%s_%*[^|]|C:%*s_%*s|S:%*[^|]|",buf1);
printf("%s
", buf1);
return 0;
}
印刷:12347_121|C:1223244_2323|S:547656| 印刷が多くなりましたが、これも問題があります.
やっと分かった.