代码不会读取多维数字和字符

时间:2015-10-25 13:13:18

标签: c file-io scanf

错误

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> 
#define size 4 

void read_world(FILE *inp,x[][size])

  int i, j, t;
  if (inp==NULL) {
    printf("File is missing\n");
 return (0);
  }
  else {
    for (i=0;i < 4;i++) {
      for (j=0;j < 4;j++) {
        (fscanf(inp, "%d", &t));  // error only reads first row of text
        x[i][j]=t;
      }
      printf("%d\n", x[i][j]);

    }
  }
  return(0);
}
int main(void) {
  int i, j;
  int g[4][4];
  FILE*inp=fopen("world.txt", "r");  // reads file
  read_world(inp, g);
  return (0);
}

需要从名为world的.txt文件中读取文本的代码。它是一个非常简单的代码,发送似乎正确读取,该文件由数字和字符组成,如&#34; 0&#34; s和&#34; *&#34;它们以4乘4的矩阵排列。结果只是在屏幕上打印文件的内容。

2 个答案:

答案 0 :(得分:1)

我认为this可能对阅读有用。使用fscanf的返回值来检查数据

答案 1 :(得分:1)

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define size 10
void read_world(FILE *inp, int x[][size])
{
	int i, j,t;
		
	if (inp == NULL)
	{
		printf("File is missing\n");
		return (0);
	}
	else
	{
		for (i = 0; i < 10; i++)
		{
			for (j = 0; j < 10; j++)
			{
				(fscanf(inp,"%d", &t));
				x[i][j]=t;
			}
			
		}
	}
	return(0);
}

int main(void)
{
	int i, j;
	int g[10][10];
	FILE*inp = fopen("world.txt", "r");
	read_world(inp, g);
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			g[i][j];
			if (g[i][j] == 0)
				printf("0 ");
			else
				printf("* ");
		}
		printf("\n");
	}

	return (0);
}

截图