一个字符串的文件保存有关问题。

一个字符串的文件保存问题。急。。#include string.h#include stdio.h#include malloc.h#include stdl

一个字符串的文件保存问题。急。。
#include "string.h"
#include "stdio.h" 
#include "malloc.h"
#include "stdlib.h"
char a[20];

int main(){
FILE *fp;
char *q;
fp=fopen("schoolGPS.txt","r" );
fread(&a,sizeof(a),1,fp);
printf("%s",a);
scanf("%s",a);
 q=a;
q=(char*)malloc(sizeof(a));
strcpy(q,a);
printf("%s",q);
fp=fopen("schoolGPS.txt","w");
fwrite(&q,sizeof(a),1,fp);
fclose(fp);
return 0;
}


[解决办法]
fwrite(&q,sizeof(a),1,fp);

----> fwrite(q,sizeof(a),1,fp);

q本身已经是地址了。

而且字符串的文件操作感觉用fprintf/fscanf比较好。

[解决办法]
没看懂要干嘛?strcpy(q,a);也不知道有什么用途。
代码改了下。malloc要free等。

C/C++ code
#include "string.h"#include "stdio.h"  #include "stdlib.h"char a[20];int main(){    FILE *fp;    char *q;    fp=fopen("schoolGPS.txt","r" );    fread(a,sizeof(a),1,fp);    fclose(fp);    printf("%s\n",a);    scanf("%s",a);    q=(char*)malloc(sizeof(a));    strcpy(q,a);    printf("%s\n",q);    fp=fopen("schoolGPS.txt","w");    fwrite(q,strlen(q),1,fp);    free(q);    fclose(fp);    return 0;}
[解决办法]
按楼上的,以R+方式打开一次就行了。打开两次就要关闭两次文件。1楼说的也是个问题,每次写时,文件里数据越来越长,会倒置a数组读不完,按我理解,读的数据应该可以写入文件的,可是不是的,我也不清楚啦
修改后代码:
#include "string.h"
#include "stdio.h" 
#include "malloc.h"
#include "stdlib.h"
char a[20];

int main(){
FILE *fp;
char *q;
fp=fopen("schoolGPS.txt","r+" );
fread(a,sizeof(a),1,fp);
printf("%s",a);
printf("请输入新的字符串:");
scanf("%s",a);
q=a;
q=(char*)malloc(sizeof(a));
strcpy(q,a);
printf("%s",q);

fwrite(q,strlen(q),1,fp);
fclose(fp);
return 0;
}