<<C和指针>>第1章之编程练习心得20140703

来源:互联网 发布:算法初步测试题 编辑:程序博客网 时间:2024/06/15 19:08

其实用C用了几年了,大多数是单片机C语言。C语言的好书也看过几本,但是感觉对C精通还得走很长的路。从C和指针开始,从博客开始,坚持把这本书的每道题都做一遍思考一遍,不管再简单的语句也要敲一敲,觉得重要的,经常遗忘的也写下来。

#define MAX_INPUT 100UL
void main()
{
int quantity,price;
unsigned char department[MAX_INPUT]=" ";
scanf("%d,%d,%s",&quantity,&price,&department);//note that , is needed when input from keyboard,if there is no ',',then ','is not needed(space enter to 
//scanf("%s",&department);//seperate the adjacent characters
printf("%d,%d,%s \n",quantity,price,department);
//printf("%s\n",department);
}

说实话,除了大一时经常用到scanf,以后几乎就没用到了。scanf是从标准输入流stdin(标准输入设备,一般是键盘)中读取内容的通用子程序,可以依次读取多个字符,并保存在对应地址变量中。

scanf("%d%d",&a,&b);

1 如果ab都成功读入,返回值就是2,;

2 只读取一个,返回值是1;

3 都没有读取,返回值0;

4 如果遇到错误或者end of file,返回值为EOF;

       scanf("%d,%d,%s",&quantity,&price,&department);注意如果格式控制符项之间有逗号的话,键盘输入时要用 逗号 隔开,如果没有逗号,输入时用 空格,回车键或tab键隔开。

      我调试时遇到一个很奇怪的问题,字符串读不进来。前两个quantity和price可以正常读入并打印。后来发现,我的输入法默认是中文,在输入数字时,中文状态的逗号会被自动变为半角字符逗号,这个我是注意到了,但是在输入字符前的逗号没有变为半角字符逗号,而且此时字符前多出了一个空格,要知道如果scanf遇到空格会认为赋值结束的。这就是问题所在。在输入前切换到英文输入法,就没有这个问题了。还发现,如果连续输入数字,逗号会自动变为半角字符逗号。


0 0