A. C语言,往文件中写入数据的问题
fclose(fp):函数fclose()关闭给复出的文件流,
释放已关制联到流的所有缓冲区.
fclose()执行成功时返回0,否则返回EOF.
加上这一句是为了保护你的文件
如果不写这句
那么别的程序也可以随意的对该文件进行写入
这样你的文件就是乱套了。
首先楼主要搞清楚getchar()是什么意思
getchar()
相当于
getc(stdin)也就是从stdin缓冲流里面读数据
你写这句也是为了防止你输入字符后后面还有残余
但是你第二个是读文件数据流
根本就没有读缓冲流
所以不写那句也可以的
不知道楼主明白否?
补充回答:
楼主没有弄明白什么是EOF
EOF常被作为文件结束的标志。EOF
的值通常为
-1
它不是字符串
他相当于宏定义
它是不会被写入到文件当中的
如楼主还有疑问
直接hi我吧
B. c语言中怎么向文件中写入数据啊 具体点 谢谢
不知你向文件输入的是什么数据,输入数据的函数很多,有fputc(s,fp);有fwrite()函数、、、、
下面是想文件输入字符,并把字符串中的小写字符转换成大写字符:
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
int main()
{
FILE *fp;
char filename[20];
printf("请输入文件的名称:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
printf("cannot open file ,,,\n");
exit(0);
}
printf("请输入字符直至结束(ctrl +z):");
fflush(stdin);
char s;
while(scanf("%c",&s),=EOF)
{
if(islower(s))
s=toupper(s);//把小写字符转换成大写字符
fputc(s,fp);
}
rewind(fp);//是位置指针重新返回文件的开头,此函数没有返回值
if((fp=fopen(filename,"r"))==NULL)//以读的方式打开文件
{
printf("cannot open file ,,,\n");
exit(0);
}
while(,feof(fp))
{
s=getc(fp);
putchar(s);
}
return 0;
}
测试:
请输入文件的名称:hello
请输入字符直至结束(ctrl +z):hello world ,
Z
Z。
C. 在C程序中,可把整型数以二进制形式存放到文件中的函数是
fwrite函数
【补充】:
功功能:
c语言函数,向文件写入一个数据块
2用法:
size_t
fwrite(const
void*
buffer,
size_t
size,
size_t
count,
file*
stream);
注意:这个函数以二内进制形式对文件进容行操作,不局限于文本文件
返回值:返回实际写入的数据块数目
(1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针;
(5)返回实际写入的数据项个数count。
说明:写入到文件的哪里?
这个与文件的打开模式有关,如果是w+,则是从file
pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite[1]
函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(file
*fp)函数同步。