c语言为什么不能写文件
❶ C语言文件的读取和写入不成功是什么原因
使用fopen的r方式可以实现读取,用w+方式可以实现写入。1.fopen的函数原型:FILE * fopen(const char * path,const char * mode); fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:r 以只读方式打开文件,该文件必须存在。r+ 以可读写方式打开文件,该文件必须存在。rb+ 读写打开一个二进制文件,允许读数据。rw+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)wb 只写打开或新建一个二进制文件;只允许写数据。wb+ 读写打开或建立一个二进制文件,允许读和写。wt+ 读写打开或着建立一个文本文件;允许读写。at+ 读写打开一个文本文件,允许读或在文本末追加数据。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。 返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
❷ 求大神帮忙看看c语言编程哪里出问题了,文件始终是空白,无法写入。
这具体要看你的num和stu[]数组的情况了。还有,这程序写的是二进制文件,而且文件没有扩展名。这都是在查看文件时要注意到的。经验证,这个程序是可以写入文件的。
❸ C语言,为什么我无法将数据写入文件
fclose(fp):函数fclose()关闭给出的文件流, 释放已关联到流的所有缓冲区. fclose()执行成功时返回0,否则返回EOF. 加上这一句是为了保护你的文件 如果不写这句 那么别的程序也可以随意的对该文件进行写入 这样你的文件就是乱套了。 首先楼主要搞清楚getchar()是什么意思 getchar() 相当于 getc(stdin)也就是从stdin缓冲流里面读数据 你写这句也是为了防止你输入字符后后面还有残余 但是你第二个是读文件数据流 根本就没有读缓冲流 所以不写那句也可以的 不知道楼主明白否? 补充回答: 楼主没有弄明白什么是EOF EOF常被作为文件结束的标志。EOF 的值通常为 -1 它不是字符串 他相当于宏定义 它是不会被写入到文件当中的 如楼主还有疑问 直接hi我吧
❹ 为什么C语言文件无法写入
赋值运算符没有逻辑运算符优先级高,
你的判断语句少写了一对括号,从而导致文件指针赋值不正确。
应该改为:
if
(
(
fp=fopen("data",
"ab")
)==NULL
)
{
...
...
❺ c语言写文件,偶尔写不进去
如果像你所说,运行有能写入成功的时候。说明代码没出错。
那么就在写入方式上,wb+是新建二进制,已存在删除,允许读写。
那么如果文件无法删除,比如文本进程被引用之类,就影响执行。
简单说,你要用wb+,运行程序的时候,尽量不要对原文件进行其他操作。
或者你直接代码每次新建一个新的文件,不重名。
❻ C语言将字符写入文件失败是什么原因
for(crr)循环、for(i)循环及其下面的if(count)之间的逻辑关系混乱,请仔细检查。
❼ 为什么C语言文件无法写入
赋值运算符没有逻辑运算符优先级高,
你的判断语句少写了一对括号,从而导致文件指针赋值不正确。
应该改为:
if ( ( fp=fopen("data", "ab") )==NULL )
{
... ...
❽ C语言对文件操作,用fputs函数不能把字符串写入文件
读写一个字符数据
经过前面的学习,我们学习了fread()、fwrite()函数的操作,这两个函数都是对一段“内存块”进行读写操作。那么,C语言还提供了fgetc()、fputc()函数,对文件中的一个字符进行读写操作。这些函数的定义如下:
int fgetc(FILE *stream);
函数说明:从stream文件指针所指向的文件读取1个字符,通过函数的返回值返回。例如:
char c = fgetc(fp);
就是从fp指向的文件,读取1个字符的数据,通过函数返回值,设置给字符变量c。
int fputc(int c, FILE *stream);
函数说明:把参数c表示的字符,写入stream文件指针所指向的文件。例如:
char c = 'M';
fputc(c, fp);
就是把参数c表示的字符变量,写入文件指针fp指向的文件。如下是一个程序测试例子:
可以看到,新建一个test.txt文件,调用fputc()函数,把一个字符写入到文件中。然后,再重新打开文件,读取文件的数据,调用fgetc()函数读取一个字符,得到的数据是刚刚写入的字符。所以,通过这个例子,我们学习了fgetc()、fputc()函数的操作,对文件进行一个字符的读写操作。
3.5 读写一行字符数据
C语言提供了fgets()、fputs()函数对文件进行读写“一行”的数据,字符串以'\n'字符换行,注意,所谓的“一行”数据,它的最后一个有效字符是’\n’,表示换行符号。字符串的结束符,还是以’\0’为结尾,表示字符串结束符。其中fgets()函数的定义如下:
char *fgets(char *buf, int size, FILE *stream);
函数说明:从stream函数指针所指向的文件中,读取size-1个字节到buf缓存,不是读取size个字节,因为,buf[ ]缓存的第size个字节存放字符串结束符,形成一个有效的字符串。
当读取到换行符时,或者到达文件末尾时,结束文件的读取操作。
返回值:读取数据成功,返回存储数据的缓存地址,就是参数buf的地址。如果读取数据失败,返回NULL。例如,读取文件完,没有数据可以再读取,则返回NULL。
int fputs(const char *buf, FILE *stream);
函数说明:把参数buf指针指向的字符串,写入到stream指向的文件。参数buf是一个字符串指针,必须指向一个合法的字符串。合法的字符串是以字符串结束符'\0'结束,表示一个字符串的结尾。
返回值:写入数据成功,返回成功写入的字符个数。失败返回EOF标记。
如下是一个程序测试例子:
程序运行结果如下:
可以看到,程序调用fputs()函数,往打开的test.txt文件写入数据。直接写入一个字符串。然后,关闭文件,再重新打开文件。调用fgets()函数读取数据,读取数据的时候,遇到回车换行的字符'\n',表示一行数据,那么,就返回读取到的一行数据。
在实际的项目开发过程中,fgets()函数非常有用。例如,我们定义一个config.txt文件,里面存放一些系统的配置信息,文件的格式如下:
cat /etc/config.txt
sys_pwd=123456
ApCliAuthMode=WPA2PSK
ApCliEncrypType=AES
ApCliChannel=1
ApCliDefaultKeyID=1
那么,文件的配置信息是一行一行数据,所以,可以用fgets()函数,快速读取出每一行系统配置信息。