当面对空白符(’ ’、’\n’、’\ t')时的不同
1、scanf(”%s”,s)在读入字符串时。在第一个空白符处停止且不都如空白符,在串尾自动添加‘\0‘。
如果你连续写两个scanf来读入两个字符串的时候,不会读入两个字符串之间的空格(无论有连续的多少个空格),而是读取两个空格之间的字符串.
char a[10],b[10];
scanf("%s",a);
scanf("%s",b);
2、gets(s)
读入一行字符,直到遇到'\n',读入换行符并将其舍弃,在串尾自动添加'\0'.
一开始在看到这里的时候,我不能理解,读入换行符再将其舍弃有什么意义,我们可以将其与scanf比较,倘若都是用回车键来结束,在scanf读入完后,后一个字符是’\n',而gets则已将’\n'扔掉了,也就意味着经常需要getchar来将scanf后面的‘\n'吸收掉,防止影响后面的输入(倘若后面的也是scanf则不需要),而gets则完全不需要。
更为关键的是gets可以读入空格,而scanf则不行,所以当需要读入空格时,一般使用gets。
3、c=getchar(),scanf(”%c”,&c)
读入下一个字符,包括空白符。
%*c表示读入然后舍弃,一般用于将空白符吃掉。
4、printf()格式化输出
5、puts(s)
输出s串,并在最后自动添加’\n’。
文件的输入
当数据量大的时候且需要多次调试时,每次手工输入或者复制黏贴效率太低,考虑文件输入。
把输入数据放在同目录下一个文本文件in.txt中,每次程序执行时自动从文件中读取数据。
代码为freopen(”in.txt”,”r”,stdin);
EOF的简单理解
EOF就是-1:#define EOF -1
补码为1111 1111
while(scanf(”%d”,&n)!=EOF) {……}
或while(~scanf(”%d”,&n)) {……}(~表示按位取反)
当scanf读不到内容的时候会返回-1,运用这段代码就可以知道读完了。
ctrl+z输入代表输入文件结束符。