c - 读取一行直到 C 中的某个字符

标签 c file-io

我正在从文件中读取此类行。我想在正斜杠之前提取这个数字 12(或任何其他数字)

12/1000 个类状态(直到结束)

现在我的代码只是从文件中提取上面的整行,但我需要正斜杠前的数字。我该怎么做呢

if (strstr (line,"class states")!=NULL) {
    if (file3!= NULL ) {
        fprintf(file3, "%s", line);
    }
}

最佳答案

您可以使用许多函数来解析您要查找的行的特定部分:sscanfstrchr(或 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/

相关文章:

c++ - 如何创建和读取 smime 格式的 pkcs7 签名信封?

r - 有没有办法使用 read.csv 从字符串值而不是 R 中的文件中读取?

c++ - 将数据写入文件的 'best' 方法是什么,稍后再次读入。

java - 为什么我的程序无法识别文本文件中的所有名称?

C: 将 int 转换为 size_t

c - 指定不包含空格的 fscanf 格式

c - 如何将所有线性变换组合成复合变换矩阵?

c - 为什么我得到 "clang: error: cannot specify -o when generating multiple output files"?

c++ - 在不移动末尾的情况下删除文件中间的字节?

c++ - 将文件中的信息插入到结构中