#include <stdio.h> int main(void) { char name[32]; //字符数组 char password[16]; printf("请输入用户名: "); scanf("%s",&name); printf("请输入密码: "); scanf("%s",&password); /** fgets(name,sizeof(name),stdin); //stdin标准输入,一般指键盘输入到缓冲区里的东西。 printf("%s ",name); */ return 0; } /** 字符串 --字符串结束符:在C语言中,为了便于存储字符串,要求在最后一个字符的后面存储一个0(一个字节)。这个0,称为“字符串结束符”,常用' '表示 --字符串的存储:在C语言中,字符串是以“字符数组”存储的 */ /** 数组的定义 --数组和其他变量一样,需要先定义,再使用 实例: int a[4]; //表示定义了一个int类型的数组,数组的名字是a,数组a里面包含8个元素,每一个元素都必须是相同类型,也就是每一个数组的元素都是int型的数据 int a[0] = 23; //数组的赋值,这样写的意思是给数组a[0]赋值为23,也就是给下标为0的元素赋值为23,而不是给数组赋值为23,注意数组定义和赋值的区别 数组的初始化 --在定义数组的同时,设置数组内的元素值 int a[8] = {2,1,5,8}; 从下标0开始初始化,没有值的元素都将初始化为0,像这个数组,后面的四个值没有初始化的值,将会以0初始化 int a[8] = {0}; 这样写表示把所有的元素都初始化为0;总共8个元素,只有第一个值有值,这个值还是0,那么剩下的值将以0来初始化,本来就都是0 --注意,这样写是错误的 a = {1,2,3}; 不能对数组名进行直接赋值 int a[3] = {1,2,3} 这样写就合适了 */ /** sizeof() 返回一个变量或类型的大小,以字节为单位 */ /** 计算一个数组有多少个元素 sizeof(a)/sizeof(a[0]); 其实很简单,sizeof可以返回数组总共占多少个字节,而sizeof(a[0])则返回a数组的第0个元素的大小,数组里元素的类型都是相同的,大小也是相同的;不要说数组元素的值大小是不同的,元素的大小怎么会相同了,你能这么问,就说明你就数据类型和变量还不是很了解,数据类型不管你里面放的值得大小,它开辟出来的空间大小都是一定的,int类型的数据可以存放多大的数据,不管你存放的数据有没有这么大,它的内存已经开辟出来了,sizeof就是可以得到你开辟出来的内存的大小 */ /** 数组的越界 --数组的越界,指下标超出正常的范围 例如 int a[3]; //a[-1] 和 a[10] 都是越界 --数组越界的后果十分危险,可能导致数据破坏,或其他不可预计的后果 */ /** 字符串的存储 字符串,是通过“字符数组”(元素类型为char类型)来存储的;就是把字符串拆分成单个字符存储在char类型里面 char name[8] = "star"; //这样写其实造成了一定程度上的浪费 char name[] = 'star'; //这样写就不会造成浪费,系统会自己根据字符来判断字符数组的大小 //前面这两种写法都等价于下面这种写法,都是以下面这种方法存储的 char name[0] = "s"; char name[1] = "t"; char name[2] = "a"; char name[3] = "r"; char name[4] = " "; //" "就是0;" "是字符串结束符,若把字符串结束符写到第一位,则系统不会再去识别后面的内容,就相当于结束符,不管后面有没有值,只要出现,就会结束程序 */ /** 字符串的输入 scanf :从第一个非空白字符开始读取,直到遇到空白字符位置(不包含空白字符) 缺点:不能读取空格,制表符,因为被当做“分隔符”处理了;当读取到空白符的时候,就会结束,比如如果你输入star shine,scanf识别到star之后的空格之后,就会结束运行,不会再去识别shine 可能导致越界 gets:遇到回车符结束,想当于读一行,但是不包括行末的回车符 特点:能够读取空格、制表符,但是不读取回车符。使用方便 缺点:可能导致越界,很危险;这个缺点具体是指当字符数组的大小(元素的个数)是确定的时候比如a[6],如果你输入的的元素超过6个元素,就会导致越界;比如char a[2],然后你输入了a = "sadss";就会导致越界 fgets:读取一行,直到遇到回车符。 特点:安全!当你输入数据太多的时候,就只会读取(第二个参数-1)个字符 回车符也被读到字符串(除非输入数据太多) 注意:fgets的第二个参数,常常使用sizeof */