字符串写入文件和文件读取操作
定义一个5个字符串的数组str1[],每个字符串最长80个字符长度。实现从键盘输入5个字符串,并这5个字符串分别写入到文件data.txt的函数,一行一条字符串,实现将字符串写入文件的函数writeStrings(char *s[])。同时实现将从文件data.txt中数据读取字符串到数组str2[5]的函数,在屏幕上打印str2数组,实现将从文件读取字符数组的函数readStrings(char *s[])。
一个实现,供参考,下面这个代码应会在编译生成exe的目录生成一个data.txt:
#include <stdio.h>
void writeStrings(char * s[]){
//以读写模式打开文件,如果文件不存在则创建文件,如果存在将文件的长度截为0
FILE * fp = fopen("data.txt","w+");
if(fp==NULL){
printf("文件打开或创建失败!\n");
return ;
}
int i=0;
while(i<5){ //将字符串数组里的字符串写入文件中
fprintf(fp,"%s\n",s[i]);
i++;
}
fclose(fp);
}
void readStrings(char * s[]){
//以读模式打开文件
FILE * fp = fopen("data.txt","r");
if(fp==NULL){
printf("文件打开或创建失败!\n");
return ;
}
int i=0;
while(i<5){//从文件读取5个字符串到字符串数组中
fscanf(fp,"%s",s[i]);
//printf("s[%d]=%s\n",i,s[i]);
i++;
}
fclose(fp);
}
int main(void){
char s1[5][81]; //存放输入的5个字符串的二维字符数组
char s2[5][81]; //存放从文件中读取的5个字符串的二维数组
char *str1[5]; //用于向writeStrings函数传入字符串数据的字符串数组
char *str2[5]; //用于存储readStrings函数调用时从文件读取的5个字符串的字符串数组
int i=0;
//获取5个字符串输入
while(i<5){
printf("请输入第%d个字符串:",i+1);
scanf("%s",s1[i]); //获取一个字符串到二维字符数组相应位置
str1[i] = s1[i]; //将这个字符串存储的位置存入字符串数组str1
str2[i] = s2[i]; //将二维字符数组s1的每一行的位置按顺序存入字符串数组s2,给字符串数组每个字符串指针赋值
i++;
}
writeStrings(str1);
readStrings(str2);
i=0;
while(i<5){ //打印结果
printf("%s\n",str2[i]);
i++;
}
return 0;
}