关于c++文件操作的写入指针问题

C++文件操作中如何在不刷新内容下从头写入数据?用ios::out和app后无法用seekp(0l,ios::beg)移动写指针到开头啊,求解怎么办???

1个回答

想在文件的头部插入数据?
这个没有直接的办法的

qq_34278989
turingFX :D据说可以用ios::in加out方式打开就好了
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C/C++指针操作 文件操作
对文件操作 文件的读入(数据块 及 当个数据) 文件的写入 指针的malloc 与 free 清楚了解指针的应用 数据块 结构体struct string与char的转化
《C和指针》课后题15.5 文件操作问题
[color=#FF0000]要求: 复制文件内容,并在输出文件中的结尾追加输入文件中出现的数字之和rn问题: 当输入文件中出现数字时,输出文件的末尾并没有追加数字之和,而只是个0rnIDE: VC6[/color][code=C/C++]rn/******************************************************************************************rn**FileName : file_read_write.crn#include rnrn#define BUFSIZE 256rnrn/******************************************************************************************rn*函数名称:FILE * open_file(char *promt, char *mode)rn*函数功能:打开文件rn*入口参数:promt, 文件的名称; mode, 文件的打开方式rn*返 回 值:FILE型指针rn*备 注:无rn*******************************************************************************************/rnFILE * open_file(char *promt, char *mode)rnrn char buf[BUFSIZE];rn FILE *file;rnrn printf("%s filename is:", promt);rnrn if(gets(buf) == NULL)rn fprintf(stderr, "Missing %s filename.\n", promt);rn //exit(EXIT_FAILURE);//为什么用exit函数会报错未定义?rn rnrn if((file = fopen(buf, mode)) == NULL)rn perror(buf);rn // exit(EXIT_FAILURE);rn rnrn return file;rnrnrnint main()rnrn char buf[BUFSIZE];rn FILE *input;rn FILE *output;rn int value ;rn int total = 0;rnrn input = open_file("Input", "r");rn output = open_file("Output", "w");rnrn while(fgets(buf, BUFSIZE, input) != NULL) rn if(sscanf(buf, "%d", &value) == 1)rn total += value;rn fputs(buf, output);rn rn fprintf(output, "%d\n", total);rnrn fclose(output);rn fclose(input);rnrn return 0;rn[/code]
写入文件操作
写入文件操作例如(“c:\\11.txt”),但是要求写入的数据不要覆盖原有的记录的数据.只是在最尾新增写入。
关于c的指针问题
下面的程序输出结果是多少?为什么呢?rnrnint b = 20;rnint c = 30;rnint d = 40;rnrnvoid change_1(int *p)rnrn p = &b;rn change_2(&p);rnrnrnvoid change_2(int **p)rnrn **p = c;rn *p = &d;rnrnrnvoid change_1(int *p);rnvoid change_2(int **p);rnrnint main()rnrn int a = 10;rn int *p = &a;rnrn change_1(p);rnrn printf("%d\n", a);rn printf("%d\n", b);rn printf("%d\n", c);rn printf("%d\n", *p);rn
关于C指针问题
#includern#define M 5rnvoid reverse (int a[])rnrn int *p=a,*q=a;rn int t=0;rn while(*q!='\0')rn rn q++;rn rn q--;rn while(p
关于C的指针问题
有两个问题rn1。有个函数的参数是双指针(**p,而且是输出参数),我能不能定义个 *q,能后你&q作为实参,然后得到的指针q就是指向**P指向的数据。rn2.一个指针int *p指向一块内存地址,能不能直接用p+i表示就是指向的第i个元素呢??rn急用!!!!!!求教啊
关于c的指针的问题。
在 typedef struct .... type;以后,定义了一个type * *p,指向main里的一个指针数组。rnrn调用子程序的时候用xx(type * *p,.....) 然后,在子程序中,有:rnrntype *p1=*p;rnrn此时所得的p1和*p指向是不是一致的?或者说,它们代表的意义是不是一样的? rnrn如果是,在子程序中,p1所引用的是什么?rnrn返回的时候需要 *p=p1 否?rnrn如果不是,为什么?rnrn我觉得是,但是我错了。rnrn分不多,不好意思。rnrn要是有没说清楚的地方,请指出,谢谢。
关于c指针的问题
我的问题如下所示(错误在代码部分):rnrn#include rnusing namespace std;rnrnvoid func(char **q)rnrn *q = new char[30];rn *q = "asdfas";rnrnvoid func_1(char **q)rnrn *q = new char[30];rn *(q[0]) = 'a';rn *(q[1]) = 's';rn *(q[2]) = 'd';rn *(q[3]) = 'f';rn *(q[4]) = 'a';rn *(q[5]) = 's';rn *(q[6]) = '\0';rnrnrnint main()rnrnrn char *temp = NULL;rn char *q = NULL;rn func(&q); //编译通过rn func_1(&q); //编译通不过,直接卡死rnrn return 0;rnrn
关于C语言文件操作的问题
问题描述:一个“in.txt”格式的文件,里面有五条数据,如下:rn张三 10rn李四 9rn王五 11rn孙六 8rn钱七 12rnrn将文件中的记录按顺序排好后输出到“out.txt”文件中。rn输出结果如下:rn孙六 8rn李四 9rn张三 10rn王五 11rn钱七 12rnrn这个排序问题不大会,怎么样让记录跟着数字一起排序?最好写下代码,谢谢~rn
关于C语言的文件操作问题
请各位大虾指教一下,本人想比较两个不同目录中相同文件名的文件内容的相同与否,这些文件有上千个,请问有何方法能进行比较!rn多谢
关于C/C++文件操作的问题
我的程序如下:rn#includernint main()rnrn FILE *p;rn p=fopen("test.txt","at");rn char a[10]="abc";rn char b[10]="def";rn char c[10]="ghi";rn fprintf(p,"%s%s%s",a,b,c);rn fclose(p);rn rn p=fopen("test.txt","rb");rn char d[10],e[10],f[10];rn fscanf(p,"%s%s%s",d,e,f);rn rn cout<
一个关于C文件操作的问题
有一个input.txt 文件,里面存着下面的内容:rn6 rn12 34 5 6 7 6rn3 4 67 8 9 5rn 怎么将其一行一行的读入到数组中,再将这些数字的和写入output.txt 中 啊rn我的代码往output.txt 中输出地都是乱码rn对文件操作不太熟悉望高人指教。。。。。。
c语言关于文件操作的问题。
我用biosdisk()读出的硬盘分区表写到文件里,怎么是乱码啊?rnrn请高手给说一下。谢谢。
关于C shell的文件操作问题
我在bsh可以这样使用rnwhile read testrndornecho $testrnend < file1rnrnfile1的内容:rn1rn2rn3rnrn执行while就有如下的输出rn1rn2rn3rnrn我想知道在csh中怎么写?把bsh搬过来不能用!rn谢谢了!rn
关于C文件操作的一个问题
在C语言里可以很容易的建立一个.txt的文本文件rn不知道有没有能删除已建立文件的方法rn或者是清空已知文件内容的方法rn谢谢大家能帮帮我rnrn
C的文件操作关于追加的问题
想在文件中追加内容,发现写不进去(运行过程中返回都是正确的),求各位指正...rn[code=c]void TEST_tmp(void)rnrn FILE * fp;rn unsigned char str_Tmp[64];rn memset(str_Tmp,0xFF,64);rnrn //打开/创建文件rn if ((fp = (fopen("1_test_filename.txt","wb+"))) , !fp)rn rn printf("\n\n 打开文件失败!\n");rn return;rn rnrn //写文件rn if(64 != fwrite(str_Tmp,1,64,fp))rn rn printf("\n\n写文件失败!\n");rn return;rn rnrn //关闭文件rn if(0 != fclose(fp))rn rn printf("\n\n关闭文件失败!\n");rn return;rn rnrn //重新打开文件rn if((fp = (fopen("1_test_filename.txt","ab+"))) , !fp)rn rn printf("\n\n打开文件失败\n");rn return;rn rnrn //继续写文件rn if(64 != fwrite(str_Tmp,1,64,fp))rn rn printf("\n\n 写文件失败!\n");rn return;rn rnrn //关闭文件rn if (0 != fclose(fp))rn rn printf("\n\n 关闭文件失败!\n");rn return;rn rnrn return;rn[/code]
C语言,关于文件操作的问题。。。
希望哪位高手指教一下fseek()的用法。rn我知道一点点相关知识却有很多的困惑:rnint fseek(FILE *stream,long int offset,int whence)rn * offset:偏移量,以字符为单位。rn我写的程序如下:rnrn#define size 3rnstruct studentrn char name[10];rn char sex[2];rn int age;rnstud[size];rnrnvoid main()rnrn...rnFILE *out;rnif((out=fopen("text.txt","w+"))==NULL)//其中text.txt已经存在了,现在想修改rnrn printf("error open");rn exit(0);rnrnlong s=sizeof(struct student);rnfseek(out,s*2,0);//本意是想把第三条记录给修改了。rnrnfwrite(&stu,sizeof(struct student),1,out);rn。。。rnfclose(out);rnrn结果显示 时发现之前的那两条记录却没了,fseek()不是只是定位吗?怎么会是这样呢?rn呵呵。。。高用指教@
关于文件操作的C语言问题
这是一个核苷酸配对的程序,我的原文件保存在D:\a.txt 里,我想把翻译后的核苷酸保存在D:\b.txt里,具体应该怎样在下面的程序里面添加啊?谢谢了!rn#include rnvoid main() rn rn for (;;) rn rn char c = getchar(); rnrn if (c == -1) rn rn break; rn rnrn if (c == 'A') rn rn c = 'T'; rn rn else if (c == 'T') rn rn c = 'A'; rn rn else if (c == 'C') rn rn c = 'G'; rn rn else if (c == 'G') rn rn c = 'C'; rn rn else rn rn fputs("Error input!", stderr); rnrn break; rn rnrn putchar(c); rn rn
关于C++中文件操作和指针的问题
在C++中,定义一个结构体类型rnrntypedef structrn long srate;rn short chans;rn short depth;rn long bps;rn short blkalign;rn long len;rn long sofar;rn int handle;rn char name[31];rn char head[43];rnwav_sig;rnrn用来存放文件头44个字节的 内容,要怎么样才能将文件头对应的字节和指针联接啊?rn比如定义一个wav_sig类型的变量*info,我要使info->chans对应当前目录下的test.wav文件的第22字节,应该怎么做?
C++文件操作无法写入的问题
今天测试C++文件操作时,始终无法将数据写入文件中,百思不得其解,最后发现文件操作完成后一定要将文件关闭,即调用close()函数。 #include #include #include using namespace std;int main(){/*fstream file1;ofstream file2;file1.open("A.dat", ios::in);file2.open("ab
java文件操作之文字写入问题
各位大佬,小弟遇见一个问题,现在需要每次从一个文件的倒数第二行写入文字,不知道怎么可以定位到倒数第二行,还请各位大佬不吝赐教
关于C文件操作!
int i,j;rn FILE *fp;rn fp=fopen("c:\\source.txt","w+");rn for(i=1;i<=5;i++)rn fprintf(fp,"%d",i);rn// fclose(fp);rn// fp=fopen("c:\\source.txt","r"); //除去这两行怎么就读文件不正确!请指点rn fscanf(fp,"%d",&j);rn printf("%d ",j);rn fclose(fp);
关于C语言文件操作.
学到现在,发现文件操作真的很菜.rn好不容易写进去了.读出来却是乱码.或者和我想的不一致.rn真是晕啊.rn举个例子.文件里有airhiphop 19 shanghairn但是读出来却是 airhiphop 19 *&^%$%^& anghai之类的乱码rn请教高手,这样的问题有什么好的解决方法么.rn或者应该如何才能正确的读取和写入呢.rn
关于c语言文件操作
对于一个目录,之下有20个文件,我要用这个*fp【20】,来分别指向这些文件,例如fp【0】指向1.txt,fp【1】指向2.txt,这个可以实现吗?怎么实现,急求
关于C语言的文件操作
从c:\first.txt文件中中读入数据,输入文件格式如下:rn? 第一行一个数n,表示文件中有几组数对rn? 从第二行到n+1行,每行两个数,中间以逗号分隔rn对这些数据进行排序,排序方式为从小到大,先按第一个数的大小,若第一个数相同则按第二个数的大小排。结果输出到c:\first_answer.txt,输出文件的格式如下:rn? 第一行一个数n,表示文件中有几组数对rn? 从第二行到第n+1行,按排好序的数对输出rn例如:rn输入:first.txt:rn4rn2,3rn4,6rn2,6rn6,8rn输出:first_answer.txt:rn4rn2,3rn2,6rn4,6rn6,8rnrn初学C,文件的读取与我预期的不符..下面是我写的代码..望大虾指教下错误rnrn#include rn#include rnrn#define MAX 20rnvoid sort(char *string[], int num);rnrnvoid main()rn //static int max = 10;rn FILE *fp, *fp2, *fp3;rn char stor[MAX][4];rn char *data[4];rn char c;rn int ct = 0;rn rn fp2 = fopen("F:/test_1.txt", "w+");rn fp = fopen("F:/test.txt", "r+");rn //fread(buf, sizeof(char), 3, fp);rn c = fgetc(fp);rn int i = (int)c;rn fgetc(fp);rn //int i = 4;rn while(ct < i && fgets(stor[ct], 4, fp) != NULL && stor[ct][4] != '\0')rn rn data[ct] = stor[ct];rn ct++;rn rn sort(data, ct);rn fwrite(&c, sizeof(char), 1, fp2);rn for(int a = 0; a < ct; a++)rn rn fp3 = fopen("F:/test_1.txt", "a");rn fwrite(data[a], sizeof(char), 4, fp3);rn rn //sort(data, ct);rn /*for(int a = 0; a < ct; a++)rn puts(data[a]);rn fwrite(data[a], sizeof(char), 4, fp2);rn */rn fclose(fp);rn fclose(fp2);rnrnvoid sort(char *string[], int num)rn char *tmp;rn int top, seek;rn for(top = 0; top < num -1; top++)rn for(seek = 1; seek < num; seek ++)rn if(strcmp(string[top], string[seek]) > 0)rn rn tmp = string[top];rn string[top] = string[seek];rn string[seek] = tmp;rn rn rn rn rn
《C和指针》中关于指针与下标的问题
问题位于 8.13 指针与下标 小节中rnrn原文:rnrn假定这两种方法都是正确的,下标绝不会比指针更有效率,但指针有时会比下标更有效率。rn为了理解这个效率问题,让我们来研究两个循环,它们用于执行相同的任务。首先,我们使用下标方案将数组中的所有元素都设置为0。rnint array[10], a;rnfor( a = 0; a < 10; a += 1 )rn array[a] = 0;rn[color=#FF0000]为了对下标表达式求值,编译器在程序中插入指令,取得a的值,并把它与整型的长度(也就是4)相乘。[/color]这个乘法需要花费一定的时间和空间。rnrn问题:rnrn红字部分就是我的疑问,为什么要用a的值和整型的长度相乘,乘出来的又是什么,有些没看懂,感谢各路高手帮忙解答
指针指针指针 关于c中指针问题!!
若T为指针变量,指向某一内存区域首地址,那么T[1],T[2]表示什么?rnrn还有 按书上所说,T+1表示地址计算 结果为T+1*c(c表示T所指的变量所占字节数),那么T+1*c这个地址在内存中到底是哪儿呢,如何确定的,内存中每一处都是有固定地址(比如某个编号)的吗 还是内存中的地址编号是按物理位置连续分布的??rnrnrnrn小弟初学指针,还望大虾不吝赐教~
菜鸟的问题,关于C指针
#includernrnmain()rnrnint x,y,*px=&x; rnx=6;rny=*px;rnpx++; rnprintf("&x=%d,y=%d,*px=%d,px=%d\n",&x,y,*px,px);rngetchar();rnrnrn结果为:&x=1245052,y=6,*px=1245120,px=1245056 //对于*px的值不解,望有人给解答.
C语言关于指针的问题
char *fun(char *p)return p;,该函数的返回值为()rnA)不确定值rnB)参数p中存放的地址值rnC)一个临时存储单元的地址值rnD)形参p自身的地址值rn此题看的让人有点晕乎,请高人指教
关于C语言指针的问题
设计C语言程序,编写一个函数swint,函数有2个整形指针变量参数x,y,函数没有返回值。该函数能交换任意两个整形变量的值。求大虾们帮帮吧
关于C语音指针的问题
比如我声明一个结构体rn1typedef structrn2 rn3 char number[7];/*序号*/rn4 char id[10]; /*配送编号*/rn5 char name[10]; /*姓名 */rn6 char addr[7]; /*地址*/rn7 char time[9]; /*到达时间*/ rn8ElemType;rn9typedef struct rn10 ElemType Element[MaxSize]; /*存储队列元素数组*/rn11 int Rear,Front; /*队头、对尾位置*/rn12 SeqQueue;rn 13 然后自定义函数rn14void Init_SeqQueue(SeqQueue *Sq_pointer) /*构造一个空队列*/rn15 rn16 Sq_pointer->Front =-1;rn17 Sq_pointer->Rear=-1;rn18 /*队尾、队头的位置都设置为-1*/rn 19 rn20然后在main函数里调用rn21main()rn22rn 23SeqQueue ListQueue;rn24 Init_SeqQueue(&ListQueue);rn25rn其他省略rnrn我想问的问题是:rn为什么我不可以在 14行 和24行同时改为“void Init_SeqQueue(SeqQueue Sq_pointer) ” “Init_SeqQueue(ListQueue);“rn就是同时不需要“*指针" 和 "地址&”符号 rn
请教关于c指针的问题。
已知数据文件格式:rnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXrn@#rnID31444873rnHThttp://www.cforc.com/misc/trinity.htmlrnBTHOLY TRINITY[来自Zhongsou][简体]rnFL 分类a:分类al:分类allrnZWrn The Holy Trinity.There has been much discussion on barious USENET groups rnconcerning the Holy Trinity.rnrn@#rnID31444874rnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXrn用C语言编写程序,提取出包含ID HT BT ZW 等字段的信息,每篇文章以各自ID号命名,生成一个单独的文本文件
关于C语言指针的问题。
int a[10];rnint *p;rnp=a和p=&a的意思是一样的吗?
一个关于C指针的问题
1.rn(*(void(*)())0)(); //调用地址为0处的子程序。rn rn2.rn* 将一个整数转换为一个指针的结果是实现相关的(implementation-dependent),除了一个例外。rn* 这个例外是常数0,它可以保证被转换为一个与其它任何有效指针都不相等的指针。这个值通常类似这样定义:#define NULL 0rn* 当用0作为指针时它决不能被解除引用。换句话说,当你将0赋给一个指针变量后,你就不能访问它所指向的内存rnif(p == (char *)0) /* wrong */rn rn rn问题:rn为什么1是对的? 在1中0不是被解除引用了么?rn
关于C的指针和编译的问题
假设有函数int fun(int n)int a=100 在编译时,应该给fun分配一个入口地址,是不是函数名字fun就是那个地址,也就是说fun是一个指针,那fun是不是被赋予了一个实际的地址空间(假设为2字节)存放地址,还是说在编译时没有给fun实际的地址空间存放入口地址,而只是在编译字符表里面指定fun的地址呢rn因为我打出fun,它是一个地址,如显示为a,然后我又看&fun和*fun都是同一个值,都是a,那上面&fun 和*fun读出来的值到底是什么???还是根本就是一种语法错误,而后编译器就默认给他们都是fun的值呢?????rn 上面函数中的int a=100在编译时应该也被赋予了一个int型的地址空间,那那个形参int n有没有被赋予实际的地址空间呢???rn 同样象定义一个数组 int a[3],它在被编译的时候,编译器给它开辟了3个在内存中实际存在的int型空间a[0],a[1],a[2],而数组名字a是一个指针,那a有没有在内存中有实际的地址,从而让a存放数组首地址&a[0]呢,那我打出a的话,它是一个地址(数组首元素的),如显示为b,然后我又打&a他也是显示为b(这是根本就是错C没有这种语法???还是说实际给a分配了内存空间,叫它读a自己的空间地址,但为什么还是和读a是一样的值呢???)rn
一个关于c的指针问题。。。。。。。。。。。〉〉〉〉〉〉〉〉〉〉〉〉
int *p;rnvoid my()rnint y;rnrn y=3;rn p=&y;rnrnrnmain()rnrn my();rn printf("%d",*p);rnrnrn结果是什么呢?
关于C语言指针问题
![这是的里打印的汉字是什么原因 “乱码”](https://img-ask.csdn.net/upload/201705/19/1495156146_905775.png)n![这里是野指针,按理说应该会出现错误,但是却能编译成功,但打印的汉字是汉字,理解不到其中的原理](https://img-ask.csdn.net/upload/201705/19/1495156196_379725.png)
请教关于c指针的问题?
有一段代码如下:rnmain()rnrn int a[3][3]=1,2,3,4,5,6,7,8,9,*p1,*p2;rn p1=a;rn p2=a[0];rn printf("%d %d %d %d",*(p1+1),*(a+1),*(p2+1));rnrn我看过老谭的书,a,a[0]的值一样,但性质不同,a+1表示指向第二行首地址,a[0]+1表示第一行第二个元素的地址,但为什么*(p1+1)的值却是2???,而*(a+1)却是第二行第 一个元素的地址?而*(p2+1)的值是2,变成*(p1+1)=*(p2+1),好像a是行指针,a[0]是列指针,但为什么a+1表示第二行首地址,而p1+1却是2的地址。难道说p1是变量, a是常量的缘故?
c关于字符串和指针的问题!!!!!!!!!!!!
输入一串字符,将小写改为大写。代码如下rn#includernvoid fun(char *p);rnvoid main()rn char q[80];//[color=#00FF00]这里改为 char *q;为什么会出错;[/color] rn printf("请输入字符串:\n");rn gets(q);rn printf("你输入的字符串为:");rn puts(q);rn fun(q);rnprintf("改写后的字符串为:");rn puts(q);rnrnvoid fun(char *p)rn while(*p)rn if(*p>='A'&&*p<='Z')rn *p+=32;rnp++;rn
关于C指针和数据类型的问题
关于C指针和数据类型的测试 收藏 rn今天看到如下一段代码:rnrnrngetforsecond(&pIec104->T3StartSec);rnrn HimRecvSerial=(*(USHORT *)&RecvBuff[4])>>1;//将RecvBuff[5],RecvBuff[4]右移rnrn pIec104->HasAckSend=HimRecvSerial;rnrn if(pIec104->HasAckSend == pIec104->SendSerial)rnrn rnrn pIec104->bT1Open=FALSE;rnrn rnrnrnrn比如RecvBuff[5]=0010 0001,RecvBuff[4]=0000 0010rnrn如上函数操作后结果为 HimRecvSerial 0001 0000 1000 0001 rnrn感到很迷惑,写程测试后发现确是如此.rnrnrnrnRecvBuff为UCHAR型数组,HimRecvSerial 为USHORT类型数据,rnrn&RecvBuff[4],是取一个UCHAR变量的地址,rnrn(USHORT *)&RecvBuff[4]是将UCHAR指针强制转换为USHORT 类型的指针.rnrn之前我都是比较明白的 我不明白为什么然后再加*取其内容后就能将RecvBuff[5]的内容取过来rnrnrn我测试的时候发现RecvBuff[5]的地址为RecvBuff[4]的地址加一.rnrnrnrn哪位高手能帮我解释下.rnrnrnrn本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/apn172/archive/2009/07/16/4354456.aspx
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法