C输入输出
作者:互联网
gets
#include<stdio.h>
#include<string.h>
int main()
{
char str[5];
//gets,读取整行,直到遇到换行符,不安全,
// 输入的字符过长,可能会导致缓冲区溢出
// 多余的字符超出了指定的目标空间,如果只是占用了未使用的内存,不会立即出现问题,
// 如果擦写了其他数据,会导致程序异常中止
gets(str);
printf("%s",str);
puts("");
for(int i=0;i<7;i++)
printf("%c\n",str[i]); // 可能正常允许但是结果未知
printf("done,len: %zd", strlen(str)); // 可能正常允许但是结果未知
return 0;
}
fgets
#include<stdio.h>
#include<string.h>
int main(void)
{
char str[5];
// fgets(char[], max_len, input)
// 如果从键盘输入,用stdin作为参数,stdin定义在stdio.h种
// 最多读取max_len-1个字符或者遇到第一个换行符,但是不会丢弃会把它存储在字符串中
// 如果读取了max_len-1个字符,换行符会被丢弃
// 通常与fputs配对使用
// fgets返回指向char的指针,返回的地址与传入的第一个参数相同,如果读到文件末尾返回空指针
char*p = fgets(str, 5, stdin);
// puts(str);
puts("*");
fputs(str, stdout);
printf("%d\n", str[3]=='\0');
printf("%d\n", str[2]=='\n');
printf("%s",str);
printf("%zd\n", strlen(str));
puts(str); // 输出str并换行,
puts("*");
puts(p);
printf("%d\n", p==NULL);
return 0;
}
gets_s
c11新增(可选)
// gets_s(char[], max_len)
// 只从标准输入中读取数据,
// 读到换行符会丢弃
// 如果输入太长,会把数组首字符设为空字符,
// 然后读取并丢弃随后的输入直到换行符或文件结尾,返回一个空指针
标签:换行符,puts,输入输出,char,str,printf,gets 来源: https://www.cnblogs.com/baiyutang7/p/16330736.html