使用‘’初始化时,一定记得加‘\0’,
puts函数 输出一个字符串后自动换行,一次只能输出一个字符串到‘\0’结束
char a[]={‘a’,’b’,’\0’}; puts(a); puts(“ab”);
scanf函数
chara[10];系统会自动在尾部加上一个结束标记\0
scanf(“%s”, a);因为a代表它的地址,所以不需要写成&a,
gets函数
系统会自动在尾部加上一个结束标记\0
chara[10];
gets(a);一次只能读取一个字符串 ,scanf 读取可以多个
gets可以读入包含空格、tab的字符串,直到遇到回车为止;scanf不能用来读取空格、tab
gets与scanf混用时发现:先gets再scanf没事,若先scanf再gets则gets不执行了
字符串数组简介
*一维字符数组中存放一个字符串,比如一个名字char name[20] = “mj”
*如果要存储多个字符串,比如一个班所有学生的名字,则需要二维字符数组,char names[15][20]可以存放15个学生的姓名(假设姓名不超过20字符)
*如果要存储两个班的学生姓名,那么可以用三维字符数组char names[2][15][20]
字符串数组的初始化
charnames[2][10] = { {‘J’,‘a’,‘y’,‘\0’}, {‘J’,‘i’,‘m’,‘\0’} };
charnames2[2][10] = { {“Jay”}, {“Jim”} };
charnames3[2][10] = {“Jay”,“Jim”};
字符输出函数putchar
putchar(65);// A
putchar(’A’);// A
inta =65;
putchar(a);// Aputchar一次只能输出一个字符
字符输入函数getchar
charc;
c= getchar();
* getchar函数可以读入空格、TAB,直到遇到回车为止。scanf则不能读入空格和TAB。
* getchar一次只能读入一个字符。scanf则可以同时接收多个字符。
* getchar还能读入回车换行符,这时候你要敲2次回车键。第1次敲的回车换行符被getchar读入,第2次敲的回车键代表输入结束。
strlen函数 返回字符串长度不包括 \0, 计算时直到 \0为止
intsize = strlen(“aab”);
strcpy函数
chars[10];
strcpy(s,“lmj”);将右边的”lmj”字符串拷贝到字符数组s中 直到拷贝到\0为止 在s的尾部肯定会保留一个\0
strcat函数
char s[20] = “hello”; // 将右边的字符串拼接到s的尾部,连接完毕后在s的尾部保留一个\0
strcmp函数
两个字符串从左至右逐个字符比较(按照字符的ASCII码值的大小),直到字符不相同或者遇见’\0’为止。如果全部字符都相同,则返回值为0。
如果不相同,则返回两个字符串中第一个不相同的字符ASCII码值的差。即字符串1大于字符串2时函数返回值为正,否则为负。
strcmp(s1, “abd”);
直接引用
chara;
a=10;
程序内部是怎么操作的呢?
其实,程序对变量的读写操作,实际上是对变量所在的存储空间进行写入或取出数据。就上面的代码而言,
系统会自动将变量名a转换为变量的存储地址,根据地址找到变量a的存储空间,然后再将数据10以2进制的形式放入变量a的存储空间中。
通过变量名引用变量,由系统自动完成变量名和其存储地址之间的转换,称为变量的”直接引用”方式
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-55787-4.html