qpwoeiruyt 发表于 2019-9-20 17:16:26

c语言 文件读取写入的问题

#include<stdio.h>
#include<stdlib.h>

void f(char* file)
{
FILE *f;
f=fopen(file,"r");

char buff;
char arry={' '};

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里面 提供给控制台操作呢?
另外是不是需要把函数f 变为 char最后还要return arry呢?

superbe 发表于 2019-9-20 17:16:27

本帖最后由 superbe 于 2019-9-20 20:47 编辑

#include<stdio.h>
#include<stdlib.h>
#define M 3    //M行
#define N 3    //N列

void f(char *file)
{
        int i,j;
        char buff;
        char array={' '};
        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=buff;
                }
        }

        for(i=0;i<M;i++){    //打印数组
                for(j=0;j<N;j++)
                {
                        printf("%c ",array);
                }
                printf("\n");
        }

        fclose(f);

}

int main(){
        f("a.txt");
        return 0;
}

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

qpwoeiruyt 发表于 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;
      char array={' '};
      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=buff;
                }
      }
fclose(f);
return array;
}
void print(char array)
{
int i,j;
for(i=0;i<M;i++){   
                for(j=0;j<N;j++)
                {
                        printf("%c ",array);
                }
                printf("\n");
      }
int main(){
      char array;
      f("a.txt");
      print(array);
      return 0;
}

superbe 发表于 2019-9-20 21:27:01

#include<stdio.h>
#include<stdlib.h>
#define M 3    //M行
#define N 3    //N列

void f(char *file,char array[])
{
        int i,j;
        char buff;
        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=buff;
                }
        }

        fclose(f);
}

void print(char array[])
{
        int i,j;
        for(i=0;i<M;i++){    //打印数组
                for(j=0;j<N;j++)
                {
                        printf("%c ",array);
                }
                printf("\n");
        }
}

int main(){
    char array={' '};
    f("a.txt",array);
    print(array);

    return 0;
}
这种方法是可以的。

qpwoeiruyt 发表于 2019-9-20 21:49:43

superbe 发表于 2019-9-20 14:27
这种方法是可以的。

谢谢{:5_110:}
页: [1]
查看完整版本: c语言 文件读取写入的问题