首先说明,开始提了一个一样的问题,后来问题失效了(我已经去投诉了),希望之前回答了我的问题的大侠再回答一次,因为我要把这个问题记录下来,谢谢!
程序:
#include<stdio.h>
#include<stdlib.h>
struct student
{
char name[20];
char sex[6];
char num[15];
int score[3];
};
int main()
{
struct student stud[4];
FILE *fp;
int i,j;
char tit[6][20]={"Name","Sex","Num","Math","English","Computer"};
fp=fopen("in.txt","r");
if(fp==NULL)
{
printf("File cannot open");
exit(0);
}
for(i=0;i<4;i++)
{
fscanf(fp,"%s%s%s",stud[i].name,stud[i].sex,stud[i].num);
for(j=0;j<3;j++)
fscanf(fp,"%d",&stud[i].score[j]);
}
fclose(fp);
printf("\n%15s%8s%20s%9s%9s%9s",tit[0],tit[1],tit[2],tit[3],tit[4],tit[5]);
for(i=0;i<4;i++)
{
printf("\n%15s%8s%20s",stud[i].name,stud[i].sex,stud[i].num);
for(j=0;j<3;j++)
printf("%7d",stud[i].score[j]);
}
fp=fopen("out.txt","wb");
if(fp==NULL)
{
printf("File cannot open");
exit(0);
}
for(i=0;i<4;i++)
fwrite(&stud[i],sizeof(struct student),1,fp);
fclose(fp);
return 0;
}
in.txt内容为:
li_ming man 201107020301 89 78 67
wang_hui women 201107020302 87 98 86
li_li man 201107020303 67 78 69
mao_dong man 201107020304 78 86 89
问题:把读到的4个数据块写入out.txt文件中,按"w"和"wb"两种方式写入数据块,然后打开被写的文件out.txt,内容为:
li_ming 烫烫烫烫烫烫man 烫201107020301 烫烫蘗 N C wang_hui 烫烫烫烫烫蘷omen 201107020302 烫烫蘔 b V li_li 烫烫烫烫烫烫烫man 烫201107020303 烫烫藽 N E mao_dong 烫烫烫烫烫兰an 烫201107020304 烫烫蕴 V Y
问题一:
即按"w"和"wb"方式写入数据块,打开被写文件,发现内容完全一样,有一部分乱码,也有一部分具有可读性。"w"写文件应该具有可读性,”wb“写文件应该不具备可读性啊?
问题二:
fscanf以空格或换行符结束,所以我设计in.txt中每行的各个数据之间用空格隔开。后来我试着把in.txt中每行的各个数据之间用3个,用5个空格隔开,那么程序运行结果就不会是正确的了。可是运行程序后的结果依然是正确的。
fscanf不是以空格或换行符结吗?
问题三
li_ming man 201107020301 89 78 67
对应
li_ming 烫烫烫烫烫烫man 烫201107020301 烫烫
li_ming man 201107020301中间多出的” 烫烫烫烫烫烫“是什么?
问题四
第二句wang_hui women 201107020302 87 98 86
对应
wang_hui 烫烫烫烫烫蘷omen 201107020302 烫烫蘔
其中women显示不完整,少了一个"w"字母,这是为什么(第四句也是一样的情况)?
c语言中文件的读与写的问题,涉及fscanf,fwrite函数 程序如下 (先上30...
1 不管是什么 w也好 wb也好 你写的时候用的是fwrite 就是二进制写入 必须要用fread来读入,直接打开文件看 有乱码很正常 当然 如果你能在给结构体赋值前把结构体内容初始化一下 就没有乱码了 2 fscanf 跟scanf一样的 多少个空格都按一个算 不以空格换行 是流的模式 你懂吗 3 见我1里面的...
C语言——关于【文件读写】的问题。
int main(void){ FILE *fp1,*fp2;float dt;fp1=fopen("c:\\\\shuju.txt","r"); \/*打开shuju.txt文件*\/ if (fp1) { fp2=fopen("c:\\\\jieguo.txt","w"); \/*打开jieguo.txt文件*\/ while (fscanf(fp1,"%f",&dt)!=EOF) \/*从shuju.txt文件读取数据,直到到达文件结尾为止...
关于C语言读取文件及fscanf函数的问题
FILE *stream:文件指针;char *format:格式字符串;[argument...]:输入列表。例如:FILE* fp;char a[10];int b;double c;fscanf(fp , "%s %d %lf" , a , &b , &c);和scanf一样,格式化串的空格不代表读取的子串有空格,存放读取数据的参数都是指针。扩展阅读,C语言中文件的读取和写...
C语言中fscanf()的用法
功 能: 从一个流中执行格式化输入\\x0d\\x0a 用 法: int fscanf(FILE *stream, char *format,[argument...]);\\x0d\\x0a int fscanf(文件指针,格式字符串,输入列表);\\x0d\\x0a 返回值:整型,数值等于[argument...]的个数\\x0d\\x0a 程序例:\\x0d\\x0a #include \\x0d\\x...
C语言文件读写结构体里面的数据怎样存到磁盘文件上
fwrite(&v, sizeof(v), 1, fp); \/\/写入文件。 fclose(fp);\/\/关闭文件。 return 0;}当需要读取的时候,按照类似的流程,通过fread读取即可。该操作优势为:a 代码简单。b 存储的数据文件大小固定,就是结构体占用内存空间的整数倍。这样在读的时候就可以根据文件的大小直接判断出一共存储...
c语言 用fwrite写入txt的文件,为什么是一堆乱码呢 ,下面是我的程序
FILE *fp; \/\/写入if((fp=fopen("database.txt", "w"))==NULL) return; fprintf(fp,"%s\\t", name); \/\/读 if((fp=fopen("database", "r"))==NULL){printf("Read error");return;} fscanf(fp,"%s\\t", sname);fclose(fp);...
C语言如何实现对txt文件的读取和写入
1、使用VS新建空工程,直接点击确定,如下所示。2、新建c文件,用于C语言编译器,输入main.c文件,如下所示。3、参考代码:include <stdio.h> int main(){ \/\/下面是写数据,将数字0~9写入到data.txt文件中 FILE *fpWrite=fopen("data.txt","w");if(fpWrite==NULL){ return 0;} for(int...
fwrite()函数和fread()函数分别有几个返回值?分别代表什么意思?(C语...
fwrite(s,sizeof(struct test),nmemb,stream);fclose(stream);} 执行 参考fread()。fread(从文件流读取数据)相关函数 fopen,fwrite,fseek,fscanf 表头文件 #include<stdio.h> 定义函数 size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);函数说明 fread()用来从...
用C语言fscanf()一运行就出错~怎么回事呀~
fopen的参数问题,你把r改成w,r是对文件的读,不能进行写操作 FILE*fin = fopen("file_in.txt","w");"w“是文件写的操作
关于C语言中,链表数据的文件储存和提取。
按照问题要求的代码如下:Consumer* read_list(){ FILE *fp;if ((fp = fopen("CONSUMER.dat", "rb")) == NULL){ printf("无法读取 CONSUMER.dat\\n");return NULL;} int sign;Consumer *s,*p,*head;head= (Consumer*)malloc(SIZE_C);if (head == NULL){ printf("读取失败!内存空间...