这个C代码在代码块中不断给我一个分段错误
这是我一直试图解决的问题,但失败了。你为什么这么认为这个C代码在代码块中不断给我一个分段错误,c,string,split,segmentation-fault,runtime-error,C,String,Split,Segmentation Fault,Runtime Error,这是我一直试图解决的问题,但失败了。你为什么这么认为 #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, "=", &a
#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函数需要一个指向字符串的字符*。您正在传递一个int。这是未定义的行为
该int的值被解释为可能没有指向有效内存位置的指针,从而导致崩溃
如果要打印int,请使用printf和%d格式说明符
printf("%d\n", conditional);
请展示您迄今为止的研究/调试工作。请先阅读第页。使用strtok_r.putsconditional的返回值;->printf%d\n,有条件的;