这是我一直试图解决的问题,但失败了。您认为为什么会这样?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char str[500];
sprintf(str, "int cube = %i;", 29);
char *ptr;
strtok_r (str, "=", &ptr);
printf ("'%s' '%s'\n\n", str, ptr);
char temp[500];
sprintf(temp, "%s", ptr);
int conditional = atoi(temp);
puts(conditional);
return 0;
}
最佳答案
问题出在这里:
puts(conditional);
puts
函数需要一个指向字符串的char *
。您将传入一个 int
。这是未定义的行为。
该 int
的值被解释为一个指针,该指针可能未指向有效的内存位置,从而导致崩溃。
如果要打印 int
,请使用 printf
代替 %d
格式说明符。
printf("%d\n", conditional);
关于c - 此 C 代码不断给我带来代码块段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41291992/