【发布时间】:2015-06-27 04:10:50
【问题描述】:
我似乎无法让我的简单脚本读取文件。我要做的就是将字母读入数组。我只是得到随机字符,这让我发疯。我在 Debug 文件夹中有文件,还有什么问题?我百分百确定一切都是正确的。
这是我的代码:
FILE * ifp;
ifp = fopen("letters.txt", "r");
int i;
int bound = 20;
char data[20];
for(i =0; i<bound; i++){
fscanf(ifp, "%s", &data[1]);
if (ifp == NULL){
return;
}
printf("Data %d = %c\n", i, data[i]);
}
【问题讨论】:
-
您的代码输入固定数组元素,如 &data[1]
-
首先,如果您尝试“阅读字母”,为什么要使用
%s说明符,它读取字符串(单词)?其次,为什么要反复读入固定的&data[1]位置?第三,当循环中没有可能更改ifp的代码时,为什么要反复检查ifp是否为空? -
好的,我把它改成了 data[i] ,它仍然做同样的事情,哈哈!还将char类型更改为“c”,那是看它是否读取文件...不是哈哈
-
始终检查 (!=NULL) fopen() 的返回值以确保操作成功 始终检查 fscanf() 的返回值(不是参数值)以确保操作成功。 fscanf(),如果成功,使用 %s 时将始终使用输入缓冲区中的两个位置,因为始终附加一个 NUL 字节,并且使用 %s,如果字母是连续的,将在第一次调用 fscanf() 时读取它们输入缓冲区限制为 20 个字符,因此允许的最大值为 19 个字符。为 19 的 %s 添加长度修饰符
-
好的,我增加了我的数组大小,检查了 null 并收到了我的错误消息。什么会影响这个程序不读取文件?