C语言:gets/puts输入输出字符串-CSDN博客

84 阅读1分钟
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    //定义字符串的几种方式
    //字符串和字符数组的区别:最后一位是否是空字符
    char names1[] = {'j', 'a', 'c', 'k', '\0'};
    char names2[50] = "jack";
    int i;
    printf("请输入新名称: ");
    //gets(names2); //scanf("%s", names2);    输入字符串
    fgets(names2, 10, stdin);//从标准输入流中读取10字节到数组names2中
    //注意:fgets会默认给最后一个元素设置为\n
    puts(names2); //printf("%s\n", names2); 输出字符串

    printf("%s\n", names2);
    printf("===========================");

    printf("数组names2中的内容: \n");
    for(i = 0;i < 50; i++)
    {
        printf("%c\n", names2[i]);
    }
    return 0;
}

注意:
空字符不要和NULL混淆
空字符是字符串的终止符,而NULL是一个符号,表示不引用任何内容的内存地址

注意:
声明存储字符串的数组时,数组大小至少比所存储的字符串多1,因为编译器会自动在
字符串常量的末尾添加空字符\0

gets/puts函数补充
注意:
1、gets函数不对接受字符串的buffer进行边界监测,会造成越界,从而产生bug
2、可以使用fgets(words1, 20, stdin);代替gets,20表示最多读入20-1个字符串