int puts(const char *str);
int fputs(const char *str, FILE * stream);
相同点
将str复制到缓冲区中,并且都不会将最后的null字符复制.
不同点
- puts会将str复制到标准的输出缓冲区中,而fputs将str复制到指定的输出缓冲区中(标准输出、文件)。
- puts会在缓冲区最后自动加上换行符,而fputs不会。
char *gets(char *str);
char *fgets(char *str, int num, FILE *stream);
相同点
从缓冲区中读取字符串,直到读取到换行符或者是null,然后存储在str中。
并且会自动添加null。
不同点
- gets是从标准缓冲区读取数据到str,fputs是从指定的缓冲区读取数据到str。
- gets不会将换行符添加到str结尾(如果有的话),但fgets会读取换行符。
- fgets可以指定读取的最大字符数,而且只能读取num-1个字符。
总结
puts:忽略null,添加换行符
gets:添加null,忽略换行符
fputs:都忽略(null,换行符)
fgets:都不忽略
输入函数(puts、fputs)都会忽略null,输出函数(gets、fputs)都会添加null。