标题中提到的三件事对我来说有点新。我在概念上对它们都很熟悉,但这是我第一次尝试用C ++从头开始编写自己的程序,它涉及到所有这三个方面。这是代码:

int main(int argc, char *argv[])
{
FILE *dataFile;
char string [180];
dataFile = fopen(argv[1],"r");
fgets(string,180,dataFile);
fclose(dataFile);
}


它可以很好地编译,但是当我使用简单的输入文本文件执行时,出现了段错误。我搜索了多个教程,但不知道为什么。任何帮助,将不胜感激。

最佳答案

您应该在这里检查几件事。它仍然可能无法达到您的期望,但可以避免出现错误。

int main(int argc, char** argv)
{
  if(argc > 1) // FIRST make sure that there are arguments, otherwise no point continuing.
  {
    FILE* dataFile = NULL; // Initialize your pointers as NULL.
    const unsigned int SIZE = 180; // Try and use constants for buffers.
                                      Use this variable again later, and if
                                      something changes - it's only in one place.
    char string[SIZE];
    dataFile = fopen(argv[1], "r");
    if(dataFile) // Make sure your file opened for reading.
    {
      fgets(string, SIZE, dataFile); // Process your file.
      fclose(dataFile); // Close your file.
    }
  }
}


请记住,此后,string可能仍为NULL。见'fgets' for more information.

08-16 03:02