鱼C论坛

 找回密码
 立即注册
查看: 1379|回复: 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 编辑
#include<stdio.h>
#include<stdlib.h>
#define M 3    //M行
#define N 3    //N列

void 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[i][j]=buff[0];
                }
        }

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

        fclose(f);

}

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

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

最佳答案

查看完整内容

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

使用道具 举报

发表于 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[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[i][j]=buff[0];
                }
        }

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

        fclose(f);

}

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

发现显示不正确,刚重新编辑过了。如果矩阵中某项是连续的字符串,只取第一个字符。每项前后可以有任意空白(空格、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[i][j]=buff[0];
                }
        }
  fclose(f);
  return array[i][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[i][j]);
                }
                printf("\n");
        }
int main(){
        char array[M][N];
        f("a.txt");
        print(array);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[][N])
{
        int i,j;
        char buff[20];
        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[i][j]=buff[0];
                }
        }

        fclose(f);
}

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

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

    return 0;
}
这种方法是可以的。
想知道小甲鱼最近在做啥?请访问 -> 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-10-4 09:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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