#对于c语言文件中,文件调用部分的内容不理解
请为我阐述以下问题:
1.字符串读取函数中,若遇到换行符或文件尾,字符串指针s中会写入文件的值吗,返回的空指针指的是返回一个新的指针p指向空指针还是s指向空指针。
2.格式化读/写函数的实例,不要模型要一个完整的片段
3.数据块读/写函数的实例,同上
c语言基础之文件调用函数的使用疑问
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
技术专家团-小桥流水 2023-11-13 19:55关注(1)如果遇到换行符或者文件尾,s中是否有数据是根据具体情况来定的,比如
fscanf(fp,"%s %d",s,&a); 这个代码读取一个字符串和一个int类型,但是如果文件中只有一个字符串就遇到了文件结束符,那么s是可以正确读取字符串的,但是a没有正确读取。如果遇到的是回车符,s也是能正确读取到的,a是否能正确读取,取决于下一个数据是否是整数。
如果是fscanf(fp,"%s",s)这种,如果遇到换行符,s中读取的是空行(空行不是空指针)。如果遇到的是文件结束符,读取就失败,s中就没有读取文件中的内容。
fscanf不会返回空指针,s就是你传入的指针,指针不会改变!改变的只是s指针指向的内存中的值。
fscanf的返回值是正确读取元素的个数。
(2)fscanf和fprintf的使用如下所示。运行结果说明:

示例代码如下:
#include <stdio.h> int main() { char filename[100]={0},dstFile[100]={0}; FILE* fp = 0,*fp2=0; char s[100]={0}; int a,b; double c,d; int res; printf("请输入文件名:"); scanf("%s",filename); //读取需要读的文件名 printf("请输入要写入的文件名:"); scanf("%s",dstFile); fp = fopen(filename,"r"); //以读方式打开文件 fp2 = fopen(dstFile,"w"); //以写方式打开文件 while(!feof(fp)) { res = fscanf(fp,"%s %d %lf",s,&a,&c); //读取数据,res记录正确读取的数据个数 //将读取的内容写入目的文件 fprintf(fp2,"%s\t%d\t%lf\n",s,a,c); //将读取的数据写入目的文件,数据之间用Tab分隔 } fclose(fp); fclose(fp2); return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 1无用