当前位置:首页 » 电脑资讯 » c语言为什么不能写文件

c语言为什么不能写文件

发布时间: 2022-10-03 02:52:22

❶ 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()函数,快速读取出每一行系统配置信息。

热点内容
为什么鼻塞会引起眼睛发炎 发布:2024-11-16 23:31:30 浏览:744
中国黄金为什么比别的牌子的便宜 发布:2024-11-16 23:27:25 浏览:298
不收房租为什么说对房东不好 发布:2024-11-16 23:05:09 浏览:603
为什么微信显示视频通话 发布:2024-11-16 23:03:19 浏览:699
一个男生为什么让女生叫他哥哥 发布:2024-11-16 22:47:08 浏览:339
为什么自行车这么便宜 发布:2024-11-16 22:39:53 浏览:409
小米wifi为什么那么快啊 发布:2024-11-16 22:22:05 浏览:297
淘宝退款后为什么交易关闭 发布:2024-11-16 22:10:44 浏览:816
小米大米蜜枣一起煮为什么会苦 发布:2024-11-16 22:04:20 浏览:237
中午过后就没吃东西了为什么不瘦 发布:2024-11-16 21:57:48 浏览:190