#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fp;
char ch;
char buffer[80] ;
fp = fopen("c:\\Rasmi Personal\\hello.txt", "w");
if(fp == NULL)
{
printf("File not found");
exit(1);
}
else
{
while(1)
{
gets(buffer);
fwrite(buffer, strlen(buffer), 2, fp); /* I made, size_t nitems = 2 (third element/argument)*/
fwrite("\n", 1, 1, fp);
}
}
fclose(fp);
return 0;
}
Rasmi Ranjan Nayak
输出:
Rasmi Ranjan Nayak [email protected] ÿ" 8ÿ"
为什么这个垃圾来了。
根据fwrite()函数。如果size_t nitems is more than 1
那么输入的文字将被写入more than once
。 但这里为什么我得到垃圾?
''buffer'中是否缺少终止NULL? – psur
从http://linux.die.net/man/3/gets:永远不要使用gets()。因为事先不知道数据是不可能知道get()将读取多少个字符的,并且因为gets()会继续存储超过缓冲区末尾的字符,所以使用它非常危险。它已被用来破坏计算机安全。使用fgets()代替。 –