【发布时间】:2014-10-16 04:00:31
【问题描述】:
我必须写出包含超过 2 位数字的单词数。一切都还好直到最后一行中的最后一个字无法计数。我数不清最后一个单词的数字。代码如下:
while(fgets(row,MAX,fp) != NULL)
{
int flag = 0;
int digits = 0;
int words = 0;
for(i = 0; i < strlen(row); i++)
{
if(isalpha(row[i]))
{
if(!flag)
{
flag = 1;
}
if(isdigit(row[i]))
{
digits++;
}
}
else if(flag)
{
flag = 0;
if(digits > 2)
{
words++; //words containing more than 2 digits
}
digits = 0;
}
printf("%d\n%s",words,row);
}
}
【问题讨论】:
-
你在 MAX 中给出的值是多少?我认为, fscanf 在这方面可能更方便。您可以使用它逐字阅读。
-
如何在 while(fgets(red,100,fp) 循环中使用 fscanf 逐字阅读?
-
我在下面给出了 fscanf 的例子。
-
永远不会达到最终(无 alpha)值,因为 fgets() 停止在行尾并在行尾标记的位置插入一个 '\0'。 strlen 也不计算字符串末尾的 '\0' 。因此,循环过早停止一个字符。