读取 txt 文件时出错,无法正确读取 txt 文件
Error when reading txt file, can't read txt file correctly
我写了一个程序来从txt文件(大学数据(中获取数据,(主题需要使用txt文件(
我不明白为什么我的程序运行错误,在第一个循环中它仍然给出正确的结果,下次它失败时
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
struct age{
char id[10];
char name[50];
int numb;
int score;
};
int main(){
age dnu[20];
char x[50];
int d;
int n;
FILE *f;
f = fopen("ex3","r");
if(f==NULL){
printf("Error");
exit(0);
}
// if( fgets(x,60,f)!=NULL){
// puts(x);
// }
fscanf(f,"%d",&n);
for(int i=0;i<1;i++){
fscanf(f," %s ",&dnu[i].id);
fscanf(f," %s ",&dnu[i].name);
fscanf(f,"%d",&dnu[i].numb);
fscanf(f,"%d",&dnu[i].score);
}
printf("%10s %20s %20s %20s","majors","Name majors","number of students ","matriculation scoren");
for(int i=0;i<n;i++){
printf("%10s %20s %20d %20d",dnu[i].id,dnu[i].name,dnu[i].numb,dnu[i].score);
printf("n");
}
fclose(f);
}
这是txt文件中的所有内容
2
IT
Technology
4252
27
SEO
Search Engine
3421
30
这是图像在此处输入图像描述
这是正确的代码
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
void delete_n(char a[]){
size_t x=strlen(a);
if(a[strlen(a)-1]=='n'){
a[strlen(a)-1]=' ';
}
}
struct age{
char id[10];
char name[50];
int numb;
int score;
};
int main(){
age dnu[20];
char x[50];
char xx[50];
int d;
int n;
FILE *f;
f = fopen("ex3","r");
if(f==NULL){
printf("Error");
exit(0);
}
// if( fgets(x,60,f)!=NULL){
// puts(x);
// }
if(fgets(x,50,f)!=NULL){
// printf("%s",x);
}
n=atoi(x);
// printf("===%d===",n);
for(int i=0;i<n;i++){
if(fgets(dnu[i].id,10,f)!=NULL){
// printf("%s",dnu[i].id);
}
if(fgets(dnu[i].name,50,f)!=NULL){
// printf("%s",dnu[i].name);
}
// fscanf(f," %[^n]s ",&dnu[i].name);
if(fgets(x,50,f)!=NULL){
// printf("%s",x);
}
dnu[i].numb=atoi(x);
if(fgets(xx,50,f)!=NULL){
// printf("%s",xx);
}
dnu[i].score=atoi(xx);
}
// printf("===%s==",x);
printf("%10s %20s %20s %20s","majors","Name majors","number of students ","matriculation scoren");
for(int i=0;i<n;i++){
delete_n(dnu[i].id);
delete_n(dnu[i].name);
printf("%10s %20s %20d %20d",dnu[i].id,dnu[i].name,dnu[i].numb,dnu[i].score);
printf("n");
}
fclose(f);
}
对不起我的英语好的,提问者的代码不能正常运行,因为读取文件的程序默认为字符串,所以您需要使用脚本将字符串转换为整数变量atoi(x1 ,x2)
相关文章:
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 读取文件的最后一行并输入到链接列表时出错
- 为什么在读取文件大小时文件IO速度会发生变化
- 读取文件时运行时的未知行为
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 读取文件中所有可能的十六进制 16 字节序列并打印每个序列
- C++ 读取文件读取文件不正确
- 读取文件并将其存储在unordered_map中时出现问题
- 读取文件时无法使用 OpenMP 获得加速
- 使用istringstearm和get行缓慢读取文件
- 如何继续读取不同功能中的文件,而不是从头开始再次读取文件?
- 读取文件时引发异常
- 从标准输入读取文件后读取用户输入
- 在读取文件后重置句柄
- 如何在C++编译时读取文件?
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- 读取文件在第二次调用时返回INVALID_HANDLE
- 通过指针读取文件
- 逐行读取文件,并将数据插入变量和数组中