字符串写入文件和文件读取操作

字符串写入文件和文件读取操作
定义一个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;
}

img