文字通り1時間前はこのコードは正常に機能していましたが、現在は機能していないため、これは私にとって非常に魅力的なエラーです。
基本的に何が起こっているのかというと、次の行の最初の「ブロック」の最初の文字が最後の「ブロック」の最後の文字として追加されているということです。
これにより、「ブロック」とは、その行/列内に保持されている文字列を意味します。
たとえば、配列が次のようなものであると想定されているとします。
1,2,3,Hello
4,5,6,Wonder
として読み込まれています
1,2,3,Hello4,
6,Wonder, ,
これが私が使用しているロジックです。何が変わったのか本当にわからないので、どんなアドバイスでもいいでしょう。
tableFile = fopen(argv[4], "r");
//pulling the table data from the file
char tableArray[30][50][256];
char c;
int i=0, j=0, k=0;
while(c != EOF){
c = fgetc(tableFile);
switch(c)
{
case ',':
tableArray[i][j++][k]='\0';
k=0;
break;
case '\n':
tableArray[i++][j][k]='\0';
j=0;
k=0;
break;
case '\r':
break;
case EOF:
break;
default:
tableArray[i][j][k++] = c;
break;
}
} //end file transfer
//Just to display, ignore magic numbers as (mostly) irrelevant
int a, b;
for (a = 0; a < 20; a++)
{
for (b = 0; b < 47; b++)
{
printf ("%s", tableArray[a][b]);
if (b<46)
printf (", ");
}
printf ("\n");
}
fclose(tableFile);