user-0 提问: 新人请教-不知道为什么不能用fputc把字符数组中的元素写到文件中

回复:
user: user-1
content: 1）批量读写，分两个步骤 a）读方式打开读出所有数据，读完关闭文件。 二进制文件：打开方式用二进制读方式,函数用,fopen,fread,fclose 文本文件    ：打开方式用文本读方式,函数用,fopen,fscanf,fclose b）写方式打开写数据，写完关闭文件。 二进制文件：打开方式用二进制写方式，函数用 fopen,fwrite,fclose 文本文件    ：打开方式用文本写方式，  函数用  fopen,fprintf,fclose  2)逐个字符读写，用   getc,putc,  fgetc,fptuc 3)如果文件巨大    边读编写，写的文件另外起个名字;    写完删除原文件，新文件改名为原文件。  PS :        读写方式打开，由于标准库，没有提供设置文件大小的函数        ----写入内容比原文件少，需要缩减文件长度。------        需要使用API或者其他手段。        所以没有必要，采用这种混合的方式。

user: user-0
content: 引用 7 楼 lm_whales 的回复:可以先学习一下，这几个函数的用法 fflush, rewind, fseek, ftell, fclose  1）写入的数据，要及时 刷新才能读到-------- fflush-------，不然需要关闭以后重新打开。 2）写入数据后，文件指针在写入的数据后面，      要读取写入的数据，把文件指针设置到指定位置      这里可以回绕指针------,rewind------，     也可以重新设置为开始位置--------- fseek---------，可以用ftell查看文件指针的位置。 3）文件不使用的时候要关闭--------- fclose---------   PS： 数据写入是正确的，只是没有刷新，以及关闭文件，所以看不到。 数据读入是错误的，因为写入的数据没刷新。 文件指针，已经指向文件结束了，所以没有数据读出来。 但是 while 测试的结果可能是错误，所以可能一直循环。 请教一下，如果对程序先读后写，应该用什么函数呢？把文件中的东西都读出来，然后清空，再写进去

user: user-2
content: 英语也是一门计算机语言的说。

user: user-3
content: for(i=0;str1[i]!=0;i++)         fputc(str1[i],fp1);     for(i=0;str2[i]!=0;i++)         fputc(str2[i],fp2); 这里是不是有问题，字符串结束标记是'\0'，0是ASCII字符，一直向文件写入，直到遇到内存中的某个存储0值的位置

user: user-1
content: 可以先学习一下，这几个函数的用法 fflush, rewind, fseek, ftell, fclose  1）写入的数据，要及时 刷新才能读到-------- fflush-------，不然需要关闭以后重新打开。 2）写入数据后，文件指针在写入的数据后面，      要读取写入的数据，把文件指针设置到指定位置      这里可以回绕指针------,rewind------，     也可以重新设置为开始位置--------- fseek---------，可以用ftell查看文件指针的位置。 3）文件不使用的时候要关闭--------- fclose---------   PS： 数据写入是正确的，只是没有刷新，以及关闭文件，所以看不到。 数据读入是错误的，因为写入的数据没刷新。 文件指针，已经指向文件结束了，所以没有数据读出来。 但是 while 测试的结果可能是错误，所以可能一直循环。

user: user-2
content: http://fanyi.baidu.com/#en/zh/When%20the%20%22r%2B%22%2C%20%22w%2B%22%2C%20or%20%22a%2B%22%20access%20type%20is%20specified%2C%20both%20reading%20and%20writing%20are%20allowed%20(the%20file%20is%20said%20to%20be%20open%20for%20%E2%80%9Cupdate%E2%80%9D).%20However%2C%20when%20you%20switch%20between%20reading%20and%20writing%2C%20there%20must%20be%20an%20intervening%20fflush%2C%20fsetpos%2C%20fseek%2C%20or%20rewind%20operation.%20The%20current%20position%20can%20be%20specified%20for%20the%20fsetpos%20or%20fseek%20operation%2C%20if%20desired.

user: user-4
content: 引用 3 楼 zxx150633 的回复:[quote=引用 2 楼 zhao4zhong1 的回复:] When the "r+", "w+", or "a+" access type is specified, both reading and writing are allowed (the file is said to be open for “update”). However, when you switch between reading and writing, there must be an intervening fflush, fsetpos, fseek, or rewind operation. The current position can be specified for the fsetpos or fseek operation, if desired. 可以用汉语吗[/quote]身为猿类，不应该排斥英语

user: user-2
content: http://translate.google.cn/?hl=zh-cn&tab=wT#en/zh-CN/When%20the%20%22r%2B%22%2C%20%22w%2B%22%2C%20or%20%22a%2B%22%20access%20type%20is%20specified%2C%20both%20reading%20and%20writing%20are%20allowed%20(the%20file%20is%20said%20to%20be%20open%20for%20%E2%80%9Cupdate%E2%80%9D).%20However%2C%20when%20you%20switch%20between%20reading%20and%20writing%2C%20there%20must%20be%20an%20intervening%20fflush%2C%20fsetpos%2C%20fseek%2C%20or%20rewind%20operation.%20The%20current%20position%20can%20be%20specified%20for%20the%20fsetpos%20or%20fseek%20operation%2C%20if%20desired.

user: user-0
content: 引用 2 楼 zhao4zhong1 的回复:When the "r+", "w+", or "a+" access type is specified, both reading and writing are allowed (the file is said to be open for “update”). However, when you switch between reading and writing, there must be an intervening fflush, fsetpos, fseek, or rewind operation. The current position can be specified for the fsetpos or fseek operation, if desired. 可以用汉语吗

user: user-2
content: When the "r+", "w+", or "a+" access type is specified, both reading and writing are allowed (the file is said to be open for “update”). However, when you switch between reading and writing, there must be an intervening fflush, fsetpos, fseek, or rewind operation. The current position can be specified for the fsetpos or fseek operation, if desired.

user: user-0
content: 字符串的输出正常，是文件的内容，写入后输出不正常，不知道怎么输入错了