C程序设计文件打开时原有内容全部消失的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/21 03:59:31
做题时看到fp=fopen("text.tnt","w")打开文件时,若打的开文件则原文件原有内容全部消失,为什么?还有的时候则不会消失。那到底什么时候是消失,什么时候是不消失?是只写的时候消失,只读的时候不消失吗?还是怎么的 ?

另外,还有一个问题就是,fp=fopen("text.tnt","r")打开文件时,若原文件有1,2,3三个整数的话,则fprintf(fp,"%d%d",&k,&n),结果输出123 0 。解析式说把123当做了一个整数输出
而另外做题目时,遇到一个问题结果是输出1 2.
不知道有谁遇到过这样的问题不,到底什么时候把123当作一个整数输出,什么时候把1赋给k输出,把2赋给n输出? 我被搞混了。
希望高手帮助。
第二个问题,为什么fprintf(fp,"%d%d",&k,&n);输出的时候,有的时候输出的是123 0,有的时候却是输出1 2 ?? 即原来文件中有123 3个整数,然后将文件中数取出来赋给k ,n两个值的时候,有的时候是将123赋给k,0赋给n;有的时候却是将1赋给k,将2赋给n. 这两个时候到底是什么样的情况?请高手写个简单的程序指点下.谢谢.

fopen("text.tnt","w")是创建一个文件,比如c.txt,不管你磁盘中有没有c.txt他都要创建,如果磁盘有的话,他会先删除再创建一个新的文件
fopen("text.tnt","w+")是如果已经有该文件了则不创建只打开,但是如果没有就直接创建
fopen("text.tnt","r")是只读,即不能进行任何更改文件的操作

主要是看文件了,文件里是“123”(没空格),则输出1230;
文件里是“1 2 3”,则输出1 2
/*建立一个1.txt,和程序放到一个文件夹*/
#include<stdio.h>
#include<conio.h>

void main()
{
int k=0,n=0;
FILE *fp=fopen("1.txt","r");
fscanf(fp,"%d%d",&k,&n);
printf("%d%d\n",k,n);
fclose(fp);
getch();
}

找本书好好了解下fopen参数

写成fopen("text.tnt","a+");就可以了。
w代表的就是重新写,a+代表的是从文件最后一个字符开始写

正确,W代表只写,所以每次打开,都会清空里面的内容,

首先,建议你先自己研究该函数的帮助文档。
只要有w方式打开,文件肯定都会被清空,r方式打开的就不会被清空。a方式打开的会追加到最后面。
fprintf函数是输出的,怎么可能得到数据?想读数据,用的是fscanf函数。如果你123是合在一起的,就只当一个整数,如果中间用空格隔开,那么它就代表3个整数。

c.txt,不管你磁盘中有没有c.txt他都要创建,如果磁盘有的话,他会先删除再创建一个新