c - 为什么 isalpha() 计数器程序给出错误的输出?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;
还应注意评论中指出的其他错误,但在总和的初始化得到修复之前,您可能会得到疯狂的胡说八道的总数。
推荐阅读
- c# - 将参数发布到 api 正文返回错误 403
- linux - 无法在 Kali Linux 中打开 Visual Studio Code
- android - 用新的 APK 替换分阶段发布
- oracle - SQL:如果满足条件,有没有办法排除重复结果
- python - 绘制 Pandas DataFrame 并并排绘制
- javascript - 使用接受语言标头来猜测用户的国家(如果有)
- python - 从强盗扫描中删除 venv 文件夹
- reactjs - @fluentui\react-northstar React 测试库尝试单击时出现下拉错误
- python - 在具有特定刺痛的某行之后,如何使用 Pandas 的 read_csv 在 Python 中读取 csv?
- python - kivyMD 数据表在登录时加载;当我按回然后再次加载数据表时,它会在几次尝试后在数据表周围产生一个光环