读取多行字符串时遇到的少读一行的问题
#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",×); 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会读取换行符

浙公网安备 33010602011771号