我试图使用 fscanf 读取和打印屏幕上的每个字符,但是当我运行程序时出现分段错误(核心转储)。这是我的代码:
#include <stdio.h>
main(int argc, char * argv[]) {
int *a ;
FILE *input;
if (argc>=2) {
input= fopen(argv[1],"r");
if (input!=NULL) {
while (feof(input)==0) {
fscanf(input,"%d\n",a);
printf("%d\n",*a);
}
fclose(input);
} else {
printf("Error!\n");
}
}
}
我提供该文件作为参数,如下所示:
./myprog input.txt
文件input.txt
包含这个:
23
47
55
70
多变的a
未初始化为指向有效的内存地址。
因此,它很可能指向无效的内存地址。
这是修复它的一种方法:
int *a = malloc(sizeof(int));
...
free(a); // when done using it
这是修复它的另一种方法:
int b;
int *a = &b;
但我建议您按照以下步骤操作,以便使其更简单、更清晰......
改变这个:
int *a;
To this:
int a;
和这个:
fscanf(input,"%d\n",a);
To this:
fscanf(input,"%d\n",&a);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)