有人可以向我解释为什么这段代码会给我一个Seg Fault。

时间:2018-04-15 06:50:25

标签: c segmentation-fault

有人可以向我解释为什么这段代码会给我一个seg错误。?

char  cmd[MAXSIZE];
char* args[2];
fgets(cmd, MAXSIZE, stdin);
// read_line(cmd);
char* cmdPt = cmd;
printf(cmdPt[0]);

然后当我:

printf("%c", cmdPt[0])

它不会给我的seg错误。

1 个答案:

答案 0 :(得分:4)

问题出在printf()声明中。

printf(cmdPt[0]);应为printf(cmdPt); 因为printf()第一个参数是const char *format,你应该提供 char数组基地址而不是单个字符。

正确阅读编译器警告,您可以找到自己的解决方案。

  

预期'const char * restrict '但参数的类型为'char'

最好将printf()与格式字符串一起使用。正如评论中所建议的那样,您应该始终使用标记-Wall -pedantic-errors编译代码。它可以帮助您批准。