1.
scanf读入一个字符避免读入上一个换行符
scanf()读取单个字符的时候,如果上面的语句也有scanf, 可能会读入换行符,导致读取的字符不是自己写入的字符。
如果用scanf("%c",&ch)
,那么程序不会忽略为了输入而按下的回车键操作,而是认为回车键是后续操作而继续响应;
而scanf(" %c", &ch)
在%c之前空格会告诉scanf忽略前面的空行,而等待第一个非空行元素读入其中。这样就能避免问题的出现。
出现在输入输出函数中的%*c ,作用是在输入或输出时,跳过一个变量(包括数字和字符),例如:
void main()
{
int i=1,j=2,k=3;
printf("%d,%*d,%d\n",i,j,k,i);//遇到%*d,就把j跳过了,输出k,故后面应该放4个变量
}
程序的输出结果是1, 3,1 (如果出现跳过变量的情况,跳过的变量用空格代替,因此3前面多一个空格;
由于这种用法的实际意义不大,所以教材中一般不提,在程序中也很少见.
在整行复制粘贴样例时,当换行%c输入单个字符时注意前面的换行符,注意吸收,可用上面的方法%*c
这都是血的教训啊
2.
对于一个数组的名字切莫与自定义的变量类型相同,这样错第一不易改,第二涉及到自己的敲代码的风格。
3.scanf()与sscanf()
scanf()的输入速度比cin快的多,但scanf是C语言中的函数,不支持string对象,但支持字符数组 ,可通过转换实现输入
在C语言中,sscanf()函数可以将字符串按照你需要的方式分离出来,具体实现百度。