我在扫描文件中的字符串直到出现整数值时遇到问题。
如果我尝试 fgets(str,30,file);
,它会扫描单行文件中的所有内容,包括整数。
文件示例:
Audi 2014
Wall Street 1995
The number of words used in one line may vary 9999
整数总是在最后,但是值之前的单词数并不总是相同的,所以像 fscanf(file,"%s %s %d", str1, str2, &integer);
这样的代码确实不能正常工作。
我的意图是扫描所有内容,直到字符串中的整数值,而不是单独扫描整数。
有任何想法吗 ?
谢谢你们。
最佳答案
这是基本的 C,没有花哨的东西。如果您的数据具有您描述的格式,它将起作用,即文本文件中的空格分隔单词,每行的编号正好在换行符之前,并且每行至少以一个不是您的编号的单词开头。缓冲区的大小可以根据需要更改,它只会影响性能。 此外,您的文件至少需要一行符合您描述的格式。
FILE *f;
char bf[2048];
char *p, *p1;
int line, i, num;
f = fopen("mydatafile.txt", "r");
if (f)
{
line = 0;
while (!feof(f))
{
fgets(bf, sizeof(bf), f);
p1 = bf;
p = strchr(bf, '\n');
while(p)
{
*p = 0;
i = 0;
while (isdigit(p[--i])) ;
num = atoi(p+i+1);
p[i] = 0;
printf("line %d: %s number = %d\n",++line, p1, num);
p1 = p+1;
p = strchr(p1, '\n');
}
}
fclose(f);
}
对于您的示例数据,输出为:
line 1: Audi number = 2014
line 2: Wall Street number = 1995
line 3: The number of words used in one line may vary number = 9999
关于c - 从文件行扫描直到 C 中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22745574/