字符串的输入输出
输出:
例:
-
结果:
结论:%s-----------从给定的地址开始,一直输出字符,直到遇到"\0"就结束
输入:
例
char str[10];
scanf("%s",str);
结论:%s----------从键盘上接收一个字符串,保存在以str为首地址的字符数组中。如果输入的字符串中有空格,则空格之后的
内容不再接收。如果你输入了大于10个字符,就会产生越界问题。
字符串结束符的使用
注意:
char str[]={'z','x','c'}
printf("%d",str);
这样写是非常危险的,当程序打印完str[]之后,还会继续打印内存中的内容,有可能会死循环。所以在使用{}定义字符串内容
的时候,必须要使用‘\0’作为结束符。char str[]={'z','x','c','\0'}这样写是OK的。char str[]=“abc”这样写也是没有问题的,这样写
自动在字符串的后面加上'\0'。
字符串长度的计算方法
1.使用字符串函数计算
strlen(str);
2.以'\0'作为结束条件进行判断
例题:查找字符串中出现谋字符的第一个位置。
#include<stdio.h>
#include<string.h>
int Found(char *p, char q) //查找最先匹配函数
{
int i;
for(i = 0; p[i] != '\0'; i++)//循环查找匹配q的第一个元素的下标
{
if(p[i] == q) //判断如果找到了第一个匹配的元素,就返回结果,并跳出函数
return i;
}
}
int main()
{
char str[] = "abcfdtgfdfdsfdsfjsroetpkmvaupeiurewhz";
char ch;
int integer;
scanf("%c",&ch);
integer = Found(str,ch); //调用最先匹配函数
printf("%d\n",integer);
return 0;
}
字符数组和普通数组的区别
(1)字符数组的每个元素都是char类型
(2)scanf()和printf()函数有一种格式化字符串%s可以用来整体输入输出字符数组
注:数组类型的含义------------数据类型指的是数组所包含元素的类型,而不是数组名的类型。数组名永远是一个
指针,指向数组的第一个元素,即数组首地址。
字符串处理函数
(1)字符串输出函数:puts----------包含在<stdio.h>
put()函数可以自动换行
put(str)函数中传递的参数可以为数组名,也可以为数组的元素的首地址
不可以格式化输出put("%s",str)是错误的
(2)字符串输入函数:gets----------包含在<stdio.h>
char str[100];
gets(str);
这样写执行时,会报警-----is unsafe。原因是,可能存在越界
可以输入空格(同scanf()相比)
(3)字符串链接函数:strcat----------包含在<string.h>
strcat(a,b)将字符串b拼接在字符串a的后面
注意:a的字符串的空间要足够大,能够容下a+b
strcat()函数把a后面的'\0'给删除了
(4)strcpy-------字符串拷贝函数
strcpy(oldstr,newstr)-------将newstr覆盖掉oldstr,oldstr要足够大
(5)strcmp-------字符串比较函数
strcpy(oldstr,newstr)--------比较两个字符串的大小(比较原则--逐个比较两个字符串相同位置字符的ascii码值,从第一位不相同的开始,就能确定大小了)
函数的返回值。如果返回值为>0------------oldstr>newstr
<0------------oldstr<newstr
=0------------oldstr=newstr
返回值为收个不同元素的ascii码相减的值
(6)strlen--------字符串长度计算函数
|
|