【发布时间】:2011-11-23 22:01:04
【问题描述】:
我需要一些帮助,我想打印文件中的信息(以字符为单位)
我决定使用二维数组,因为数据看起来像这样
0 0 . . .
0 0 . . .
. . . . .
. . . . .
. . . . .
我现在准备的代码好像不能打印出来
请看下面:
/* Read from file, pass on file contents to a 2D array, Print file contents from 2D array*/
#include<stdio.h>
#include<string.h>
#define N 5
//My proposed function to print an array with contents from a file
void printboard(int **a, int n, int n);
int main(int argc, char *argv[])
{
char linestr[100];
int board[N][N];
int k;
int h=0, l=0;
if(argc==2) //File should be called from the terminal hence working with argc & argv
{
FILE *fp;
fp = fopen(argv[1], "r");
if(fp == NULL)
{
printf("Error, can't open '%s' file!!!\n", argv[1]);
return -1;
}
while (fgets(linestr,sizeof linestr, fp) != NULL)
for(k=0; k<strlen(linestr); k++)
{
if (linestr[k]!='\n')
{
board[h][l]=(int)linestr[k];
l++;
}
h++;
l=0;
}
fclose(fp);
}
printboard(board,h,l);
return 0;
}
void printboard(int **a, int n, int n)
{
int i, j;
for (i=0; i< N; i++)
{
for (j=0; j< N; j++)
{
printf("%c", a[i][j]);
}
printf("\n");
}
}
我对 C 有非常基本的了解,并且在 1.5 个月前才开始编码。社区有什么建议可以解决这个问题或做得更好吗?目的是以二维数组格式打印文件的内容。我真的很想让数据与 2D 数组一起使用,因为我需要进一步处理它以在名为 Peg Solitaire 的游戏中移动“0”。
【问题讨论】:
-
尽管您的打印板方法中有 2 个未使用的同名参数,但您能否更准确地了解错误/预期?
-
我假设您指的是 int n;在打印板函数中出现两次
-
这真是太多的代码了。将来,将其缩减为一个最小的示例。在此过程中,您可能会自己发现错误。
-
我假设您指的是 int n;在打印板函数中出现两次,问题出在编译器上,它给了我以下错误:重新定义参数 n sol1.c:7:注意:以前的 n 定义在这里是 sol1.c:在函数 main:sol1。 c:40:警告:从不兼容的指针类型 sol1.c:7 传递 printboarb 的参数 1:注意:预期的 int * 但参数的类型为 int ()[5] sol1.c:在顶部级别:sol1.c:45:错误:参数 n 的重新定义 sol1.c:45:注意:以前的 n 定义在这里我真的不知道如何解决这个问题