关于C/C++文件操作的问题

maohaibo627 2010-06-23 12:40:07
我的程序如下:
#include<iostream.h>
int main()
{
FILE *p;
p=fopen("test.txt","at");
char a[10]="abc";
char b[10]="def";
char c[10]="ghi";
fprintf(p,"%s%s%s",a,b,c);
fclose(p);

p=fopen("test.txt","rb");
char d[10],e[10],f[10];
fscanf(p,"%s%s%s",d,e,f);

cout<<d<<" "<<e<<" "<<f<<endl;
fclose(p);

getchar();
}
问:为什么我把这句fprintf(p,"%s%s%s",a,b,c);中%s%s%s中间加一空隔
%s %s %s,在执行fscanf(p,"%s%s%s",d,e,f);时就能正确的把abc赋给数组d,def赋给数组e,ghi赋给数组f,当我去掉中间的空隔时就会把abcdefghi都赋给数组d呢,这是为什么啊?
...全文
44 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
maohaibo627 2010-06-23
  • 打赏
  • 举报
回复
哦,是这样啊,看来还得回头多看看书,谢谢了!
brookmill 2010-06-23
  • 打赏
  • 举报
回复
fscanf("%s")这样读取字符串的时候,空格就是作为字符串的分隔符。
fprintf(p,"%s%s%s",a,b,c); 这样三个字符串连在一起,fscanf的时候区分不开,所以就一起读出来了。
brookmill 2010-06-23
  • 打赏
  • 举报
回复
楼主用记事本把test.txt打开看看就知道了。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧