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

标签 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])

它不会给我的段错误。

最佳答案

问题出在 printf() 语句中。

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

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

expected ‘const char * restrict’ but argument is of type ‘char’

最好将 printf() 与格式字符串一起使用。正如评论中所建议的,您应该始终使用标志 -Wall -pedantic-errors 编译代码,这对您有很大帮助。

关于有人可以向我解释为什么这段代码会给我一个段错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49839255/

相关文章:

c - 串行 c 在 linux 中读取有问题

c - 没有静态存储的移动平均线故障

c++ - 自定义类 vector 的类函数的段错误

c++ - 如何在 C++ 中创建包含子类的类的链表?

c - SIGSEGV 发送两次 - 处理后程序崩溃

c - WinApi unicode 问题

计算距离

c语言memove()函数输出错误?

c - malloc 复制中的段错误

assembly - 段错误 x86 <_dl_debug_state>