C语言知识重点复习1——字符数组与字符串

一、字符数组与字符串

1、字符数组与字符串的区别

是否为字符串的标志是结尾是否有'\0'

char str[]="abc";               //这是一个字符串
char str[]={'a','b','c'};       //这是一个字符数组,结尾没有'\0'
char str[4]={'a','b','c'};      //这是一个字符串,因为字符数组的长度为4,只填充了3个字符,结尾自动补上'\0'

2、字符数组与字符串的遍历

只有字符串可以使用%s的格式输出

char str[]="hello world!";
int n=sizeof(str)/sizeof(char);
for(int i=0;i<n;i++)
	putchar(str[i]);    //这里也可以使用printf("%c",str[i]);
putchar('\n');

printf("%s\n",str);     //没有'\0'的字符数组不可以使用%s

3、小练习:逆序输出输入的字符串

方法一:不逆序字符串,直接逆序输出
#include<stdio.h>
#include<string.h>
int main()
{
    char p[20];
    gets(p);   //字符串输入函数
    int len=strlen(p);//获取字符串长度
    int n=sizeof(p)/sizeof(char);    
    printf("len=%d,n=%d\n",len,n);  //这里需要注意strlen和sizeof的区别,此时len=12,sizeof=20
    for(int i=len-1;i>=0;i--)       //使用for循环将其逆序输出
        putchar(p[i]);     //字符输出函数
    return 0;
}


方法二:逆序字符串,正常输出
#include<stdio.h>
#include<string.h>
int main()
{
    char p[20];
    gets(p);
    int len=strlen(p);
    int i=0,j=len-1;   //设置双指针,让字符串字符前后交换,达到字符串逆序的目的
    printf("%d",len);
    while(i<j)  //左指针小于右指针则循环
    {
        char temp=p[i];
        p[i]=p[j];
        p[j]=temp;  //交换p[i]和p[j]
        i++;j--;    //左指针往前,右指针往后
    }
    printf("%s",p);  //输出字符串
    return 0;
}

4、strlen和sizeof的区别

char str[10]="hello";
int len=strlen(str); //strlen不包含'\0'的字符串的长度
int n=sizeof(str);   //sizeof包含'\0'的整个字符数组的长度

5、二维数组的遍历

二维字符数组:一行一个单词

char fruit[][10]={"apple","orange","pear"};  //可以不指定行数,但是必须指定列数
int n=sizeof(fruit)/sizeof(fruit[0]);       //行数
int m=sizeof(fruit[0])/sizeof(char);         //每行的字符个数
for(int i=0;i<n;i++)
	{
		for(int j=0;j<m;j++)
			putchar(fruit[i][j]);
		putchar('\n');
	}

6、字符串函数

#include<string.h> //字符串函数的头文件

/*
1、字符串长度函数:strlen(str);   表示求字符串str的长度
2、字符串拷贝函数:strcpy(str1,str2);   表示将str2拷贝到str1中
3、字符串拷贝函数:strncpy(str1,str2,n);   表示将str2中的n个字符拷贝到str1中
4、字符串连接函数:strcat(str1,str2);   表示将str2拼接到str1后面
5、字符串连接函数:strncat(str1,str2,n);   表示将str2中的n个字符拼接到str1后面
6、字符串比较函数:strcmp(str1,str2);   将str1和str2逐个按ASCII码值比较,str1>str2返回1,str1=str2返回0,str1<str2返回-1
7、字符串比较函数:strncmp(str1,str2,n);  比较前n个字符
8、忽略大小写的字符串比较函数:strcasecmp(str1,str2);
9、查找指定字符:strchr(str,c);
10、查找指定字符串:strstr(str1,str2);

检查函数:
1、字符串是否为字母:isalpha(str);
2、字符串是否为大写字母:isupper(str);
3、字符串是否为小写字母:islower(str);
4、字符串是否为数字:isdigit(str);

此部分需要代码示例的话就给我评论留言,我可以补上一些例子代码!!!

*/

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值