字符串操作
单字符串输入出输
putchar和getchar
int putchar(int c);
向标准输出写一个字符
返回写了几个字符,EOF(-1)表示写失败
int getchar(void)
从标准输入读入一个字符
返回类型是int是为了返回EOF(-1)
windows -> Ctrl-Z
Unix -> Ctrl-D
#include <stdio.h>
int main(int argc, char const *argv[])
{
int ch;
while((ch = getchar()) != EOF)
{
putchar(ch);
}
printf("EOF\n");
return 0;
}
输出
字符串数组
- char **a
- a是一个指针,指向另一个指针,那个指针指向一个字符(串)
- char a[][]
#include <stdio.h>
int main()
{
char a[][10] = {
"hello",
"world",
"sdafafagagagagaga"
};
return 0;
}
这个程序error,参数超过10个字符了a[0] --> char*
字符串函数
strlen、strcmp、strcpy、strcat、strchr、strstr
strlen
- 计算的是字符串str的长度,从字符的首地址开始遍历,以 ‘\0’ 为结束标志,然后将计算的长度返回,计算的长度并不包含’\0’
函数原型
size_t strlen (const char* str);
- 函数参数:const char* str:字符指针
- 返回值:size_t 无符号整数(即:unsigned int)
#include<stdio.h>
#include<string.h>
int main()
{
char arr[] = "hello";
printf("strlen = %lu\n",strlen(arr));//5
printf("sizeof = %lu\n",sizeof(arr));//6
return 0;
}
strcmp
- 这个函数是将 src 和 dst 两个字符串进行比较、strcmp 函数是比较两个字符串中字符的顺序的。实际上是拿其字符的ASCⅡ码值来进行比较;
- 拿第一个字符串中的第一字符值减去第二个字符串中的第一个字符,如果为 0,则继续向下比较;若不为 0,则返回差值的数。
函数原型
int strcmp (const char * src,const char * dst);
- 函数参数:src、dst需要比较的两个字符串
- 返回值:
- 第一个字符串大于第二个字符串,则返回大于 0 的数字;
- 第一个字符串等于第二个字符串,则返回 0;
- 第一个字符串小于第二个字符串,则返回小于 0 的数字。
#include<stdio.h>
#include<string.h>
int main()
{
char s1[] = "abc";
char s2[] = "abc";
char s3[] = "Abc";
char s4[] = "abc ";
printf("%d\n",strcmp(s1,s2));//0
printf("%d\n",strcmp(s1,s3));//32
printf("%d\n",strcmp(s1,s4));//-32
return 0;
}
strcpy
- 将一个字符串复制到另一块空间地址中 的函数,‘\0’是停止拷贝的终止条件,同时也会将 ‘\0’ 也复制到目标空间
函数原型
char* strcpy(char* dst,const char* src);
- 函数参数:
- dst目标字符串的首地址
- src源地址:被复制的字符串的首地址,用const修饰,避免修改掉被拷贝的字符串
- 返回值:返回的是目标字符串的首地址
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[10] = "**********";
char arr2[10] = "abcd";
printf("%s\n", strcpy(arr1, arr2));//abcd
return 0;
}
strcat
- 复制一个字符串,将这个字符串拼接在另一个字符串后面
函数原型
char*strcat(char* dst, const char* src);
- 函数参数:
- dst目标字符串的首地址
- src源地址:字符串的首地址,用const修饰,避免修改掉被拷贝的字符串
- 返回值:返回的是目标字符串的首地址
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[10] = "ada";
char arr2[10] = "abcd";
printf("%s\n", strcat(arr1, arr2));//adaabcd
return 0;
}
strchr
- 查找字符的首次出现
函数原型
char*strchr(const char* str,int ch);
- 函数参数:
- str 指向待分析的空终止字节字符串的指针
- ch要搜索的字符
- 返回值:指向 str 找到的字符的指针,若未找到该字符则为空指针。
strstr
- 查找子串字符的首次出现
函数原型
char* strstr(const char* str1,const char* str2)
- 函数参数:
- str1 指向待分析的空终止字节字符串的指针
- str2 要搜索的字符串
- 返回值:返回str2在str1中第一次出现的地址;否则返回NULL。