#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个字符串