[英]Why does isalpha() counter program gives wrong output? C
我正在尝试运行一个简单的程序,该程序读取文件并返回上下文和字母字符数。 我得到一个错误的输出。
#include <stdio.h>
#include <ctype.h>
int main()
{
FILE *f;
char path[100],c;
int sum;
printf("\nGive file's path: \n");
scanf("%s",&path);
f=fopen(path,"r");
if(f==NULL){
printf("\nFile not found.\n");
return -1;}
while(!feof(f)){
c=fgetc(f);
putchar(c);
if (isalpha(c)!=0){
sum++;}
}
printf("\n\n %d Alphabetical characters found.\n\n",sum);
fclose(f);
return 0;
}
文件的上下文是: 12345 abz 12345 ABZ 我应该得到上下文和数字 6。相反,我得到了这个:
12345 abz 12345 ABZ
�
4772675 Alphabetical characters found.
变量sum
未初始化为零。 所以它用一个随机值初始化(这取决于它所在位置的任何值。
要修复,请将行更改为
int sum = 0;
评论中指出的其他错误也应该注意,但是在总和的初始化被修复之前,你可能会得到疯狂的无意义的总数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.