#25585: 為什麼使用fgets無法輸入?


studyfromzhang0809@gmail.com (JHE JIA ZHANG)

學校 : 國立臺北商業大學
編號 : 135733
來源 : [203.121.248.170]
最後登入時間 :
2023-01-22 22:59:30
a271. 彩色蘿蔔 -- 兔子 | From: [114.25.36.235] | 發表日期 : 2021-06-04 14:06

#include <stdio.h>

#include <string.h>

int main(int argc, const char * argv[]) {

    int frequency, day, i;

    char carrot[10000] = {"\0"};

    int x, y, z, w, n, m;

    scanf("%d",&frequency);

    while(frequency)

    {

        int flag = 0, t = 0;

        scanf("%d %d %d %d %d %d",&x, &y, &z, &w, &n, &m);

        fgets(carrot, sizeof(carrot), stdin);

        day = strlen(carrot);

        for(i = 0;i < day;i += 2)

        {

            if(flag > 0)

                m -= n * t;

            if(m <= 0)

                break;

            switch(carrot[i])

            {

                case '1':

                    m += x;

                    break;

                case '2':

                    m += y;

                    break;

                case '3':

                    m -= z;

                    break;

                case '4':

                    m -= w;

                    flag ++;

                    t += 1;

                    break;

            }

            if(m <= 0)

                break;

                

        }

        if(m <= 0)

            printf("bye~Rabbit\n");

        else

            printf("%dg\n",m);

        frequency --;

    }

    return 0;

}

 
#25588: Re:為什麼使用fgets無法輸入?


fire5386 (becaidorz)

學校 : 國立清華大學
編號 : 115822
來源 : [140.114.253.77]
最後登入時間 :
2024-11-13 14:54:03
a271. 彩色蘿蔔 -- 兔子 | From: [61.230.21.131] | 發表日期 : 2021-06-04 18:56

因為你讀完數字後,那行後面還有個'\n'沒有讀,所以你用fgets只會讀到'\n'

要清除殘留的'\n', scanf("%d %d %d %d %d %d ",&x, &y, &z, &w, &n, &m); 在讀完最後一個數字後加上空白就可以了

 
ZeroJudge Forum