繁体   English   中英

基本C代码中报告的语法错误 - 出了什么问题?

[英]Syntax error reported in basic C code - what is wrong?

代码如下。

#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[] )'

您需要使用gcc编译源文件,如下所示

gcc -o attack attack1.c

然后运行它

./attack

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

有一个简短的视频在这里解释的差异。

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

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

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

gcc -Wall -o attack1 attack1.c

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

./attack1

您可以将这些命令组合为

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

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

gcc attack.c

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

./a.out

希望这对你有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM