从文件data.txt读入整数n后,打印n,循环5次。代码如下。bug是只要文件中有内容,不管内容是什么,输出的都是11000、00000、10000这样类似的序列。
#include<stdio.h>
#include<stdlib.h>
int main(void){
FILE *fp;
int n;
if((fp=fopen("D:\\data.txt","r"))==NULL)
{
printf("Can't open the file");
return 0;
}
for(int i=0;i<5;i++){
n=fscanf(fp,"%d",&n);
printf("%d\n",n);
}
fclose(fp);
return 0;
}
修改如下,供参考:
#include<stdio.h>
#include<stdlib.h>
int main(void){
FILE *fp;
int n;
if((fp=fopen("D:\\data.txt","r"))==NULL)
{
printf("Can't open the file");
return 0;
}
for(int i=0;i<5;i++){
fscanf(fp,"%d",&n); //n=fscanf(fp,"%d",&n); 修改
printf("%d\n",n);
}
fclose(fp);
return 0;
}
遇到 C 语言文件读取老是得到错误序列的问题,可以尝试以下解决方案:
检查文件是否打开成功:检查文件是否被成功打开,可以使用 fopen()
函数打开文件,如果函数返回失败,则意味着文件无法打开。
检查读取字符串的方法是否正确:检查读取字符串的方法是否正确,例如,检查是否使用了正确的读取字符串的函数,以及是否正确地设置读取字符串的参数。
检查输入字符串是否合法:检查输入字符串是否合法,例如,检查输入字符串的长度是否超过了文件的最大长度,以及输入字符串是否包含非法字符。
检查文件是否为空:如果文件为空,则读取字符串会失败。可以使用 fopen()
函数打开文件,并检查文件是否为空。
下面是一些示例代码,可以帮助您更好地理解解决方案:
#include <stdio.h>
#include <fstream.h>
int main() {
// 打开文件
std::ofstream file("file.txt");
if (!file) {
printf("无法打开文件\n");
return 1;
}
// 检查文件是否打开成功
if (!file) {
printf("无法打开文件\n");
return 1;
}
// 读取文件内容
char buffer[1024];
file >> buffer;
printf("读取到的字符串为:%s\n", buffer);
// 检查读取字符串的方法是否正确
if (buffer[0] != '\n') {
printf("读取字符串的字符不是换行符\n");
return 1;
}
// 检查输入字符串是否合法
if (buffer[0] != 'X') {
printf("输入的字符串不合法\n");
return 1;
}
// 关闭文件
file.close();
return 0;
}
在上面的示例代码中,我们首先使用 fstream
函数打开了一个名为 "file.txt" 的文件。然后,我们使用 >>
运算符将文件的内容读取到变量 "buffer" 中。最后,我们使用 printf()
函数检查了读取的字符串是否正确。
请注意,在读取文件中,我们需要确保输入字符串的长度不超过文件的最大长度,并且输入字符串不包含非法字符。