我正在从文件中读取此类行。我想在正斜杠之前提取这个数字 12(或任何其他数字)
12/1000 个类状态(直到结束)
现在我的代码只是从文件中提取上面的整行,但我需要正斜杠前的数字。我该怎么做呢
if (strstr (line,"class states")!=NULL) {
if (file3!= NULL ) {
fprintf(file3, "%s", line);
}
}
最佳答案
您可以使用许多函数来解析您要查找的行的特定部分:sscanf
、strchr
(或 index
) 和 strtok
可能是合适的,具体取决于您要查找的内容。 (例如,分隔符是否始终为单个“/”,或者您是否需要处理多字符分隔符)。
在所有情况下,正如 xaxxon 所建议的,您需要首先使用类似 fgets
的方式读取整行,然后调用您选择的函数将其拆分。
----编辑---- 如果你知道你的号码总是在第一个 '/' 之前,你可以这样做:
int number;
if (sscanf(line, "%d/", &number) == 1) {
printf("number found = %d\n", number);
} else {
printf("INVALID INPUT\n");
}
“%d/”是一个模式,它告诉 sscanf 匹配一个十进制数字,后跟一个“/”。 sscanf 返回分配的输入值的数量,因此如果它不是“1”,则输入行不是预期的格式。
关于c - 读取一行直到 C 中的某个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17377004/