1. 字符数组初始化传递
字符数组的定义方法与上一节的一维数组类型相似
#include void main(){ char c[10];}
字符数组初始化
#include void main(){ // char c[5]={'h','e','l','l','o'}; // 不建议这么写 char c[5]="hello"; printf("%s\n", c); // 会打印乱码}
报错原因:因为printf通过%s打印字符串是会一次输出每一个字符,当到结束符’\0’时结束
2. scanf读取字符串
错误写法:
#include void main(){ char c[11]; scanf("%s",c); // 假设输入 hello world printf("%s\n",c); // 只会输出 hello}
原因:scanf通过”%s”读取字符串时,会忽略【空格】和【回车】
正确写法:
#include void main(){ char c[10]; char d[10]; scanf("%s%s",c,d); // 假设输入 hello world printf("%s %s\n",c,d); // 只会输出 hello}
3. gets函数和puts函数
gets函数:
类似于scanf函数,用于读取标准输入,
特点:
· 可以一次读一行字符串
· 自动输入一个”\0″结数符
· 与scanf的区别是scanf遇到【空格】后不存储,gets遇到【回车\n】不存储
#include void main(){ char c[20]; // gets函数中放入字符数组的数组名 gets(c); // 假设输入 hello world // puts函数中放入字符数组的数组名 puts(c); // 输出 hello world}
puts函数:
类似于printf函数,用于标准输出,
特点:
· 只能输出字符
· 多输入一个换行符等价于printf(“%s\n”)
4. str系列字符串造作函数
#include #include void main(){ int len; char c[20]; char d[100]="world"; gets(c); // 假设输入 hello puts(c); // 输出 hello len = strlen(c); // 获取c的长度 printf("len=%d\n",len); // 输出 len=5 // 把 d 拼接到 c中 strcat(c,d); puts(c); // 输出 helloworld char e[100]; // 把 c 复制给 e; strcpy(e,c); puts(e); // helloworld // 比较字符串大小 printf("c?e=%d\n", strcmp(c,e)); // 相等时是 0; printf("c?d=%d\n", strcmp(c,d)); // 小于时是负值; printf("d?c=%d\n", strcmp(d,c)); // 大于时是正值;}