其他分享
首页 > 其他分享> > C输入输出

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