C语言fwrite()问题。

我记得puts和gets是不一样空格为结束的呀?name1fputs和fgets应该也是一样的啊。不以空格为结束。但是那个烫烫烫烫烫烫烫烫烫烫应该是因为写进去的字符串缺少... 我记得puts和gets是不一样空格为结束的呀?name1fputs和fgets应该也是一样的啊。不以空格为结束。但是那个烫烫烫烫烫烫烫烫烫烫应该是因为写进去的字符串缺少字符串结束符吧'\0'。 展开
 我来答
崇拜八神
2014-04-16
知道答主
回答量:16
采纳率:0%
帮助的人:11.3万
展开全部
应该是这种情况:你输入“hell0 world”时因为有间隔,导致你从流中写入到你的a变量中其实只有hello这几个字符,因为它是以空格结束,最后读出来的其实就是你写进去的hello加上a中剩余元素的值,如果你的a中的元素先都初始化为0,那么就不会出现乱码了。要获取一行需要getline吧
金色潜鸟
2014-04-16 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5751万
展开全部
fwrite(),fread() 用于2进制文件 写和读。fopen 时 要 设 "wb“ "rb"。

puts 见到 字符串结束符 输出结束。

假定 声明的字符数组大小 大于输入的1行字符串个数 则
char str[500];
gets(str);
fgets(str,500,stdin);
gets 读1行字符串,含空白,读入的内容不含 '\n'
fgets 读1行字符串,含空白,读入的内容 含 '\n'
两者都含字符串结束符 '\0'
更多追问追答
追问
那个“烫烫烫烫烫烫烫烫烫烫烫烫”是怎么回事呢?
那么我输入的hello world为何直接收了hello呢?
不好意思还是没搞明白。
追答
没看到你的输入语句。
hello world 是从文件读入,还是从键盘读入?
如果是文件,用 fgets() 读入:
FILE *fin;
char s[100];
fin=fopen("abc.txt","r");
fgets(s,100,fin); 这里就读入1行。
如果从键盘读入:
fgets(s,100,stdin); 这里就读入1行。
---------
如果你用 fread() 从文件读入, 文件打开 要用 binary 形式。
=========
输出错,可能是输入错,也可能是输出错,也可能是文件格式与读法不配套。要让我精确地告诉你错的原因,请把程序给全了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
solotony
2014-04-16 · TA获得超过599个赞
知道小有建树答主
回答量:700
采纳率:0%
帮助的人:576万
展开全部
读写都少了结尾的0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式