簡體   English   中英

此C代碼不斷給我代碼塊中的分段錯誤

[英]This C code keeps giving me a segmentation fault in codeblocks

我一直試圖解決這個問題,但是失敗了。 你為什么這么認為呢?

#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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM