如何在C中解析简单字符串?
我有一个以下格式的字符串:如何在C中解析简单字符串?,c,parsing,C,Parsing,我有一个以下格式的字符串: start 123 char c; if (sscanf(line, "start %d%c", &number, &c) == 1) { 我是这样分析的: if (strstr(line, "start") == line) { int number = -1; if (sscanf(line + strlen("start "), "%d", &number) == 1) { printf("star
start 123
char c;
if (sscanf(line, "start %d%c", &number, &c) == 1) {
我是这样分析的:
if (strstr(line, "start") == line) {
int number = -1;
if (sscanf(line + strlen("start "), "%d", &number) == 1) {
printf("start %d\n", number);
}
}
C语言中有更好的方法吗?是的,您只能使用以下方法:
if (sscanf(line, "start %d", &number ) == 1) {
不需要
if (strstr(line, "start") == line) {
再
如果要检查更多:请检查数字后是否没有多余字符,然后可以使用以下格式:
start 123
char c;
if (sscanf(line, "start %d%c", &number, &c) == 1) {
注意:上述格式(甚至您的格式)不检查“开始”和数字之间是否只有一个空格。因此,如果您的字符串类似于
“start\t 45”
,那么if
将返回true您可以编写自己的解析器或尝试使用strtok()
sscanf()
可能是最好的方式。@ППццццццццц请注意,此格式不检查“开始”和数字之间是否只有1个空格。这是可以的。在我的例子中,空格的数量并不重要。
if (strstr(line, "start") == line) {
int number = -1;
if (sscanf(line, "%*s %d", &number) == 1) {
printf("start %d\n", number);
}
}