基本C代码中报告的语法错误-怎么了?

时间:2018-10-13 11:09:37

标签: c

下面给出了代码。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main ( int argc, char *argv[] )
{
   //FILE *fps;
   char secret[512] =" ";
   FILE *fps = fopen("/etc/comp2700/share/secret", "r");

   if(fps == NULL)
   {
       printf("Secret file not found\n");
       return 1;
   }

   fgets(secret, 512, fps);
   printf("Secret: %s\n", secret);
   fclose(fps);

   return 0;   
}

当我尝试运行该程序时,它反复抛出以下错误:

./attack1.c: line 4: syntax error near unexpected token `('
./attack1.c: line 4: `int main ( int argc, char *argv[] )'

3 个答案:

答案 0 :(得分:2)

您需要按以下步骤使用gcc编译源文件

gcc -o attack attack1.c

然后运行

./attack

您应该阅读编译解释语言之间的区别。

有一段简短的视频here说明了区别。

答案 1 :(得分:2)

您不能以./attack1.c的形式从命令行运行C程序。通常,shell会拒绝执行C源文件,因为它不应该具有执行许可权,但是由于某种原因,在您的系统上,它必须具有x位,并由默认Shell读取为脚本。 / p>

这当然会失败,因为attack1.c包含C代码,而不是命令文件。请注意,#include行被shell解释为注释,并且错误仅发生在第4行。

要运行C程序,必须首先对其进行编译以生成可执行文件:

gcc -Wall -o attack1 attack1.c

如果没有编译错误,然后运行可执行文件:

./attack1

您可以将这些命令组合为

gcc -Wall -o attack1 attack1.c && ./attack1

答案 2 :(得分:-1)

首先,您需要使用以下命令来编译attack.c代码:

gcc attack.c

这将创建一个可执行文件a.out,您可以使用以下命令运行该文件:

./a.out

希望这对您有所帮助。