#11101: 然後...然後line6就死掉了


Benson86 (nobodyzxc)

學校 : 國立彰化高級中學
編號 : 53437
來源 : [140.113.128.187]
最後登入時間 :
2020-02-25 00:10:53
a011. 00494 - Kindergarten Counting Game -- UVa494 | From: [59.104.123.14] | 發表日期 : 2016-06-28 00:44

以下是小弟的code ,Uva 送有過,卻死在貴j的line6,有路過的善心人士,如果知道小code的死因,還望不吝指點指點

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
    char str[111];
    int cnt = 0;
    while(fgets(str , sizeof(str) , stdin)){
    int i , isword = 0;
    for(i = 0 ; i < strlen(str) ; i++){
        if((str[i] <= 'z' && str[i] >= 'a') ||
            (str[i] <= 'Z' && str[i] >= 'A')){
                isword = 1;
        }
        else{
            if(isword){
                cnt++;
                isword = 0;
            }
         }
    }
    printf("%d\n" , cnt);
    cnt = 0;
    }
    return 0;
}

 

 
#11110: Re:然後...然後line6就死掉了


Layaccc (Layaccc)

學校 : 不指定學校
編號 : 58298
來源 : [60.250.2.2]
最後登入時間 :
2016-07-18 17:56:10
a011. 00494 - Kindergarten Counting Game -- UVa494 | From: [60.250.2.2] | 發表日期 : 2016-06-28 15:51

以下是小弟的code ,Uva 送有過,卻死在貴j的line6,有路過的善心人士,如果知道小code的死因,還望不吝指點指點

#include
#include
#include
int main(void){
    char str[111];
    int cnt = 0;
    while(fgets(str , sizeof(str) , stdin)){
    int i , isword = 0;
    for(i = 0 ; i < strlen(str) ; i++){
        if((str[i] <= 'z' && str[i] >= 'a') ||
            (str[i] <= 'Z' && str[i] >= 'A')){
                isword = 1;
        }
        else{
            if(isword){
                cnt++;
                isword = 0;
            }
         }
    }
    printf("%d\n" , cnt);
    cnt = 0;
    }
    return 0;
}

 

 

array的大小不夠大導致overflow
char str[111] 改成 char str[500];

 
#11115: Re:然後...然後line6就死掉了


Benson86 (nobodyzxc)

學校 : 國立彰化高級中學
編號 : 53437
來源 : [140.113.128.187]
最後登入時間 :
2020-02-25 00:10:53
a011. 00494 - Kindergarten Counting Game -- UVa494 | From: [59.104.123.14] | 發表日期 : 2016-06-29 22:19

 

array的大小不夠大導致overflow
char str[111] 改成 char str[500];

萬分感謝,看來用fgets難免會有跑不出RE的盲點。




 
ZeroJudge Forum