c - 此 C 代码不断给我带来代码块段错误

标签 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, "=", &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/

相关文章:

c - 有没有办法获取在c中调用函数时使用的参数名称

c - fseek 查找 EOF 字符

java - java中如何读取超过100000行的excel文件?

php - 如何用 PHP 用大写字母分解字符串?

perl - 如何仅打印空格分隔文件中的某些字段?

split - 在 Rust 中将拆分解包为元组?

c - 如何在 gdb 中递归设置源文件目录?

c - 为什么 malloc-ed 数组和非 malloced 数组的大小不同?

java - token - Java 字符串

javascript - 正则表达式获取每个单词的中间部分javascript