我有一个用C编写的程序,它应该计算单词"the"出现在作为参数给出的文本文件中的次数.但程序不断给出分段错误错误,我对如何解决这个问题没有更多的想法.任何帮助将不胜感激.谢谢!
这是代码:
#include <stdio.h>
#include <string.h>
void main(int argc, char *argv[])
{
int h,i;
FILE *fp;
char* mess;
for(i=1; i < argc; i++)
{
h=0;
fp=fopen(argv[i],"r");
while (!feof(fp))
{
fscanf(fp,"%s",mess);
if (strcmp(mess,"the")==0)
h++;
}
printf("The file %s contains the word \"the\" %d times.",argv[i],h);
h=0;
fclose(fp);
}
}
char* mess;
[...]
fscanf(fp,"%s",mess);
Run Code Online (Sandbox Code Playgroud)
混乱是没有初始化的.您需要为正在阅读的单词分配一些空间
s匹配一系列非空白字符; 下一个指针必须是指向char的指针,并且该数组必须足够大才能接受所有序列和终止NUL字符.输入字符串在空白处或最大字段宽度处停止,以先发生者为准.
因此,您还希望使用字段宽度将读取的内容限制为缓冲区的大小.这需要一些小心处理,因为缓冲区大小之后的位可能是"the"(例如"呼吸",如果你读了4个字符的话,会给你"brea"和"the"以及误报)