!
一、字符串输入
1.不幸的gets()
char * gets ( char * str );
原理 : 它读取整行输入,直到遇到换行符,然后丢弃换行符,存储其余字符,并在末尾添加一个空字符使其成为一个c字符串。
缺点 : 如果输入的字符串过长,会导致缓冲区溢出,多余的字符超出了指定的目标空间。
2.替代品——fgets()
char * fgets ( char * str, int num, FILE * stream );
原理 :fgets()函数的第二个参数指明了读入字符的最大数量,第三个参数针对于文件操作,一般情况下以stdin(标准输入)为参数,并且fgets()函数将保留换行符。
优点 :可以防止字符串过长而导致的缓冲区溢出。
3.scanf()
int scanf ( const char * format, ... );
原理 :如果使用%s转换说明,以下一个空白字符(空格,空行,制表符,换行符)都可以作为字符串的结束。
总结 :scanf更适合单词的输入,在输入句子时,建议不要使用。
二、字符串的输出
1.puts()
int puts ( const char * str );
原理 :只需要把字符串的地址作为参数传递给它即可。
总结 :因为puts()函数在显示字符串时会自动在末尾添加一个换行符,所以建议与gets()函数一起使用。
2.fputs()
int fputs ( const char * str, FILE * stream );
总结:与puts()函数不同,fputs()不会在输出的末尾添加换行符,建议与fgets()函数一起使用
3.printf()
int printf ( const char * format, ... )
总结
虽然比较简单,但我还是经常犯错,所以就当是一个小结吧。