簡體   English   中英

為什么sscanf這樣行?

[英]Why is sscanf acting this way?

我以為我了解C,但是我很難編寫一個簡單的加法練習代碼。 當我運行此代碼時,每次int a均為0。 但是,int b可以正常工作。 這里的想法是程序的輸入是8 +9。為什么sscanf無法識別變量a?

#include <stdio.h>
#include <stdlib.h>

int plus(int a, int b){
    return (a + b);
}

int main()
{
    int a, b;
    char input[100], op;

    printf("...I am ZOLO...\n");
    printf("...The most vercatile calculator known to man...\n");
    printf("...Please enter your query:");
    fgets(input, sizeof(input), stdin);
    sscanf(input, "%d %s %d", &a, &op, &b);

    printf("%d + %d = %d...", a, b, plus(a, b)); 

    return 0;
}

喬納森·萊因哈特(Jonathon Reinhart)給出了正確答案。 在這種情況下,這不僅是未定義的行為問題,還在於編譯器設法在a (內部存儲器順序)之前分配op ,並且您的計算機使用小尾數字節順序,因此'\\0'字符存儲在此之后。 op清除先前存儲到a

暫無
暫無

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

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