读取多行字符串时遇到的少读一行的问题

#include<stdio.h>

int parseHex(const char hexString[]){
    int i=0;
    int sum=0;
    int k;
    while(hexString[i]!=0){
            k=0;
        if(hexString[i]>='A'&&hexString[i]<='F'){
            k=hexString[i]-'A'+10;
        }else{
            k=hexString[i]-'0';
        }
        sum=sum*16+k;
        i++;
    }
    return sum;
}

int readLine(char buf[],int bufSize){
    int i;
    for(i=0;;++i){
        int c=getchar();
        if(c==EOF||c=='\n'||i==bufSize-1){
            buf[i]=0;
            return i;
        }
        buf[i]=c;
    }
}

void test() {
    char line[100];
    readLine(line,100);
    int dec = parseHex(line);
    printf("%d\n",dec);
}



int main(){
    int times;
    scanf("%d",&times);
    char temp[100];
    readLine(temp,100);//?????什么意思:读取换行符
    int i;
    for(i=0;i<times;i++){
        test();
    }
    return 0;
}

注意到:在读入行数之后,添加了两行代码:

char temp[100];
readLine(temp,100);

这一行有什么作用呢?

在我们输入times这个变量后,我们会打一个换行符

而scanf只会读到换行符之前,这样开始读取后

第一次readLine会读取换行符

posted @ 2017-12-05 18:28  楚春秋  阅读(217)  评论(0)    收藏  举报