fwite 不以空格结尾????

weiyiabout 2008-12-24 09:59:15
char buf[1000];
memset(buf,0,1000);

scanf("%s",buf);

int written = fwrite(buf,1,strlen(buf),filename);

如果输入:This is a test.
但是这样只写进去了前四个字符(This),如何把这个字符串全部写入?
...全文
50 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbh2001 2008-12-24
  • 打赏
  • 举报
回复
scanf("%s",buf); ----> gets(buf);

scanf函数遇到空白符会停止读入
cat2865 2008-12-24
  • 打赏
  • 举报
回复
非要使用scanf的话也可以输入带有空格的字符串,就是自定义回车或者其他字符为为结尾符;

scanf("%[^\n]",buf);//以回车为结尾符




char buf[1000];
FILE *stream;
stream = fopen("TEST.TXT", "wb");


memset(buf,0,1000);

scanf("%[^\n]",buf);
//printf("%s",buf);
int written = fwrite(buf,1,strlen(buf),stream);

以其他格式字符收尾时候如 b

char buf[1000];
FILE *stream;
stream = fopen("TEST.TXT", "wb");


memset(buf,0,1000);

scanf("%[^b]",buf); //如果输入 "123 456 b789 456"后回车,则读入的字符串为b之前的123 456 "
printf("%s",buf);
int written = fwrite(buf,1,strlen(buf),stream);

ckt 2008-12-24
  • 打赏
  • 举报
回复
如上,不是fwrite的问题.

char buf[1000] = {0};
gets(buf);
cat2865 2008-12-24
  • 打赏
  • 举报
回复
转述 zhangfjj(小张)
由于scanf函数在接收数据时,是通过空格来区分数据项的.
如果你:
char c[20];
scanf("%s",c);
输入:this is a c program!
它接收到this后遇到空格,认为对应%s的数据项已结束,后面的(包含空格)不能输入。
你想输入带空格的字符串,只有使用gets(c);
但遗憾的是用gets()函数一次只能输入一个字符串。
waizqfor 2008-12-24
  • 打赏
  • 举报
回复
mark!!!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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