#33790: 請益,出現記憶體區段錯誤! Segmentation fault (core dumped)


needadsos@gmail.com (Kim Liao)

學校 : 不指定學校
編號 : 221375
來源 : [60.251.144.197]
最後登入時間 :
2023-03-18 11:19:03
a065. 提款卡密碼 -- 板橋高中教學題 | From: [60.251.146.65] | 發表日期 : 2023-02-03 12:22

我發現當陣列大小不同時,測試與送出答案出現不同結果。

於是想請問大家為什麼會這樣?

以下是我的程式碼

當input[8]時,送出解答為AC,但測試時卻會出現「記憶體區段錯誤! Segmentation fault (core dumped)」

當input[7],送出解答為NA(系統呼叫了 abort 函式!),測試時卻為AC

我自己是覺得題目字元數有7個,應該設input[8]才對(含最後的'\0'字元)

謝謝大家!

#include <stdio.h>
int main() {
    char input[8];
    int i;
    int a;
    int b;
    int c;
    insert(input);
    for(i=0;i<6;i++)
    {
        a=input[i];
        b=input[i+1];
        if(a<b||a==b)
        c=b-a;
        else
        c=a-b;
        printf("%d",c);
    }

    return 0;
}
void insert(char input[])
{
    int i=0;
    while(1)
    {
    scanf("%c",&input[i]);
    if(input[i]=='\n')
    break;
    i++;
    }
}

 
#33791: Re: 請益,出現記憶體區段錯誤! Segmentation fault (core dumped)


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a065. 提款卡密碼 -- 板橋高中教學題 | From: [59.115.4.42] | 發表日期 : 2023-02-03 12:58

    if(input[i]=='\n')


輸入的最後可能沒有換行符號,你可以改用EOF判斷

不過這題不用這麼麻煩一個字元一個字元讀取,直接輸入字串就好的

 
ZeroJudge Forum