原来一直对scanf函数用得比较浅,这次需要同时输入数字和字符串,结果就出现了问题。
问题现象:
printf("Enter parameter: (VideoWidth1 VideoWidth2 1 Title bDate bTime)/n");
printf("stream1 width is:");
scanf("%d",&Para[0]);
printf("stream2 width is:");
scanf("%d",&Para[1]);
printf("osd font lib is:");
scanf("%d",&Para[2]);
printf("Title is:");
scanf("%s",StrBuff);
printf("Display date 0/1:");
scanf("%d",&Para[4]);
printf("Display time 0/1:");
scanf("%d",&Para[5]);
printf("%d,%d,%d,%s,%d,%d/n",Para[0],Para[1],Para[2],StrBuff,Para[4],Para[5]);
代码如上。Title字段总是显示为空,表现为输不进去。原因何在呢?
经过调试发现,原来是StrBuff接收了0x0A即换行符。%d原来是不理会换行符的,而%s这种格式的输入,就要理会,所以出错。
解决方案:
scanf("%c",&Temp);
scanf("%s",StrBuff);
即用Temp来接收换行符,StrBuff的接收就不受影响了。
另外,还可以用:scanf("%d %d %d %s %d %d",&Para[0],&Para[1],&Para[2],StrBuff,&Para[4],&Para[5]);这种办法来一行接收,中间用空格来分隔。记得,必须用空格。我先前用,号,结果不得行。