鱼C论坛

 找回密码
 立即注册
查看: 1021|回复: 4

[已解决]c语言 文件读取写入的问题

[复制链接]
发表于 2019-9-20 17:16:26 | 显示全部楼层 |阅读模式
5鱼币
#include<stdio.h>
#include<stdlib.h>

void f(char* file)
{
  FILE *f;
  f=fopen(file,"r");
  
  char buff[255];
  char arry[3][3]={' '};

while(fgets(buff,255,f)!=NULL){
   printf("%s",buff);}
fclose(f);
}
int main(){
f("a.txt");
return 0;
}

a.txt  里面是个矩阵
a b c
d e f
a b c


像请问一下大佬们 我这里能读取txt的内容并打印出来 但是我要怎么样才能将内容 输入到arry[3][3]里面 提供给控制台操作呢?
另外是不是需要把函数f 变为 char  最后还要return arry呢?
最佳答案
2019-9-20 17:16:27
本帖最后由 superbe 于 2019-9-20 20:47 编辑
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define M 3    //M行
  4. #define N 3    //N列

  5. void f(char *file)
  6. {
  7.         int i,j;
  8.         char buff[20];
  9.         char array[M][N]={' '};
  10.         FILE *f;
  11.         if((f=fopen(file,"r"))==NULL){
  12.                 printf("打开文件失败!");
  13.                 exit(0);
  14.         }
  15.         for(i=0;i<M;i++){    //从文件读字符到数组
  16.                 for(j=0;j<N;j++)   
  17.                 {
  18.                         fscanf(f,"%s",buff);
  19.                         array[i][j]=buff[0];
  20.                 }
  21.         }

  22.         for(i=0;i<M;i++){    //打印数组
  23.                 for(j=0;j<N;j++)
  24.                 {
  25.                         printf("%c ",array[i][j]);
  26.                 }
  27.                 printf("\n");
  28.         }

  29.         fclose(f);

  30. }

  31. int main(){
  32.         f("a.txt");
  33.         return 0;
  34. }
复制代码


发现显示不正确,刚重新编辑过了。如果矩阵中某项是连续的字符串,只取第一个字符。每项前后可以有任意空白(空格、tab、空车)。

最佳答案

查看完整内容

发现显示不正确,刚重新编辑过了。如果矩阵中某项是连续的字符串,只取第一个字符。每项前后可以有任意空白(空格、tab、空车)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-20 17:16:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 superbe 于 2019-9-20 20:47 编辑
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define M 3    //M行
  4. #define N 3    //N列

  5. void f(char *file)
  6. {
  7.         int i,j;
  8.         char buff[20];
  9.         char array[M][N]={' '};
  10.         FILE *f;
  11.         if((f=fopen(file,"r"))==NULL){
  12.                 printf("打开文件失败!");
  13.                 exit(0);
  14.         }
  15.         for(i=0;i<M;i++){    //从文件读字符到数组
  16.                 for(j=0;j<N;j++)   
  17.                 {
  18.                         fscanf(f,"%s",buff);
  19.                         array[i][j]=buff[0];
  20.                 }
  21.         }

  22.         for(i=0;i<M;i++){    //打印数组
  23.                 for(j=0;j<N;j++)
  24.                 {
  25.                         printf("%c ",array[i][j]);
  26.                 }
  27.                 printf("\n");
  28.         }

  29.         fclose(f);

  30. }

  31. int main(){
  32.         f("a.txt");
  33.         return 0;
  34. }
复制代码


发现显示不正确,刚重新编辑过了。如果矩阵中某项是连续的字符串,只取第一个字符。每项前后可以有任意空白(空格、tab、空车)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-20 21:02:33 | 显示全部楼层
superbe 发表于 2019-9-20 10:16
发现显示不正确,刚重新编辑过了。如果矩阵中某项是连续的字符串,只取第一个字符。每项前后可以有任意 ...

大佬如果我想再细分 把打印的那部分改成一个print函数 我要如何把文件中读取的数组传到下一个函数的参数里面呢?

就是说f函数能不能return一个array出来 然后 print函数 把return出来的array作为参数 再打印呢?


我试着写了一个print函数
char f(char *file)
{
        int i,j;
        char buff[20];
        char array[M][N]={' '};
        FILE *f;
        if((f=fopen(file,"r"))==NULL){
                printf("打开文件失败!");
                exit(0);
        }
        for(i=0;i<M;i++){    //从文件读字符到数组
                for(j=0;j<N;j++)   
                {
                        fscanf(f,"%s",buff);
                        array[j]=buff[0];
                }
        }
  fclose(f);
  return array[j];
}
void print(char array[M][N])
{
int i,j;
for(i=0;i<M;i++){   
                for(j=0;j<N;j++)
                {
                        printf("%c ",array[j]);
                }
                printf("\n");
        }
int main(){
        char array[M][N];
        f("a.txt");
        print(array);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-20 21:27:01 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define M 3    //M行
  4. #define N 3    //N列

  5. void f(char *file,char array[][N])
  6. {
  7.         int i,j;
  8.         char buff[20];
  9.         FILE *f;
  10.         if((f=fopen(file,"r"))==NULL){
  11.                 printf("打开文件失败!");
  12.                 exit(0);
  13.         }
  14.         for(i=0;i<M;i++){    //从文件读字符到数组
  15.                 for(j=0;j<N;j++)   
  16.                 {
  17.                         fscanf(f,"%s",buff);
  18.                         array[i][j]=buff[0];
  19.                 }
  20.         }

  21.         fclose(f);
  22. }

  23. void print(char array[][N])
  24. {
  25.         int i,j;
  26.         for(i=0;i<M;i++){    //打印数组
  27.                 for(j=0;j<N;j++)
  28.                 {
  29.                         printf("%c ",array[i][j]);
  30.                 }
  31.                 printf("\n");
  32.         }
  33. }

  34. int main(){
  35.     char array[M][N]={' '};
  36.     f("a.txt",array);
  37.     print(array);

  38.     return 0;
  39. }
复制代码

这种方法是可以的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-20 21:49:43 | 显示全部楼层
superbe 发表于 2019-9-20 14:27
这种方法是可以的。

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-28 22:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表