1

我必须从我从文件中读取的内容更改在主函数中定义为全局变量的整数数组的值,读取过程是 k,char 与“x”字符串的比较是 k,但是在数组的位置 i 上分配新值不起作用。

//global variable
int matrix[55];

static void main()
{

FILE *readFile;
    char *caracter;
    readFile = fopen(fileName,"r");
    int i;

if (readFile == NULL)
        {
            g_print ("\nError");
        }
        else
        {
          while (caracter != EOF) 
          {
          caracter = fgetc(archivo);
          if (caracter == '*')
           matrix[i] = 1;
          if (caracter == ' ')
           matrix[i] = 2;
          if (caracter == '+')
           matrix[i] = 3;
          if (caracter == 'S')
           matrix[i] = 4;
          if (caracter == 'S')
           matrix[i] = 5;
          if (caracter == 'R')
           matrix[i] = 6;
          else
           matrix[i] = 7;
      i++;
      g_print ("%d", mapaJuego[i]);
          }
}
}
4

2 回答 2

2

你的变量caracter是一个指针。如果您阅读文档,fgetc您会看到它返回一个int.

您还可以在初始化之前使用它,这意味着即使您还没有阅读它caracter,它实际上也可以使用。 EOF

您应该做的第一件事当然是修复类型。第二个应该是将循环条件更改为:

while ((caracter = fgetc(archivo)) != EOF)

它在一个表达式中进行分配检查错误/文件结尾。

于 2013-04-28T00:23:15.313 回答
0

你的代码有更多的问题。除了约阿希姆指出的那些:

  1. 字符必须是int
  2. 字符未初始化;

您还有以下问题:

  1. i未初始化使用(这是一个阻止程序);
  2. 你的main()功能是静态的;
  3. 你在比较'S'两次;
  4. 您的代码不是最理想的(在匹配之后也会比较所有内容):只需使用一个switch..case或更好的strchr()调用;
  5. 您的main()功能是void(没什么大不了的,但会阻止您将特定值返回给操作系统)。
于 2013-04-28T18:17:31.707 回答