#include<stdio.h>
int main(){
int count[26];
for(int i=0;i<26;i++){
count[i]=0;
}
printf("xx1");
FILE *p;
printf("xx");
p=fopen("test.txt","r");
if(p==NULL)
printf("error");
int x=fgetc(p);
while(x!='\0'){
count[x-97]++;
x=getc(p);
}
for(int i=0;i<26;i++){
printf("%c:%d\t",i+97,count[i]);
}
fclose(p);
return 0;
}
这是我的代码,当我运行getc()时。发生错误...
程序接收到的信号SIGSEGV,分段错误。_IO_getc(fp = 0x0)at getc.c:3737 getc.c:没有那个文件或目录。
所以总结评论:
首先,'\0'
是字符串的末尾,not文件的末尾。因此,代替:
while(x!='\0'){
您应该这样做:
while (x != EOF) {
其次,在执行以下操作之前,您应验证x-97
在count
的索引范围内:
count[x-97]++;
第三,如果p == NULL
,您的功能不应继续。