【黑马程序员】C语言字符串

来源:互联网 发布:贵阳大数据是做什么的 编辑:程序博客网 时间:2024/05/09 12:24

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


一、字符串的基本概念


字符串是位于双引号中的字符序列 

在内存中以“\0”结束,所占字节比实际多一个 注意: 

1.可以把一个字符常量赋给一个字符变量,但不能把字符串常量赋给字符变量 

2.C语言中没有字符串变量,可以用字符数组来存放字符串 


二、字符数组定义
char 数组名[常量表达式] 

字符数组也可以是二维或多维数组。
char 数组名[常量表达式1][常量表达式2] 

注意:定义字符数组时,应确保数组长度比字符串长度至少多1 



三、字符数组初始化 


1) 定义的同时进行初始化 

字符数组也允许在定义时作初始化赋值。

例如: char c[10]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a','m'}; 


当对全体元素赋初值时也可以省去长度说明。

例如: char c[]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm' }; 


第二种 

char c4[10]={"abc"} 


第三种初始化方法: 

char c5[5]="ab"; 

char c6[]="afdsafas"; 


2) 先定义再初始化: 

char c7[3];

 c7[0] = 'a'; 

c7[1] = 'b'; 

c7[2] = 'c'; 

注意:未被使用的元素均被自动初始化为0 



注意点:

1.如果以%s格式进行输入的话,注意空格问题,如果输入的字符串有空格的话,则空格之后的字符无法被接受保存。(以%s的格式输入,scanf遇到了空格,就结束了)

2.输入的字符串的长度要小于数组的长度


<span style="font-size:14px;">////  main.c//  字符串长度计算方法//  判断字符串中是否包含某个字符,如果包含,返回其首次出现的位置,否则返回-1//  Created by Brisinga on 15/11/15.//  Copyright © 2015年 yan. All rights reserved.//#include <stdio.h>/**    思路:     函数 参数:字符串数组    1.判断是否==’\0‘        如果是 =='\0' 结束            判断==key            return i;  */char search(char str[],char key){    for (int i=0; i!='\n'; i++) {      //如果等于\0 结束循环        if (str[i]==key) {            return i;        }    }    return -1;}int main(int argc, const char * argv[]) {       char str[] = "asdjfosdfdf";  //定义一个字符串    int result = search(str,'a');    printf("%d\n",result);    return 0;}</span>

四、字符串处理函数


字符串函数的使用

使用puts和gets必须包含头文件 stdio.h

puts()输出一个字符串

puts(字符数组名)


1.puts函数可以自动换行么? 可以

2.也可以不是数组的首地址,可以是元素的地址

gets()输入一个字符串


gets(数组名)


1.可以接收空格


需要包含 string.h头文件

strcat() 连接一个字符串


1.格式:strcat(oldstr,newstr);

2.oldstr的长度要足够大要能够保存下oldstr+newstr

3.newstr把oldstr的最后一个字符’\0’给覆盖掉了



strcpy字符串拷贝函数

strcpy(oldstr,newstr)  oldstr的内容会被覆盖


strcmp比较两个字符串的大小

strcmp(str1,str2)


函数返回值>0   str1>str2

        <0   str2<str1

      ==0   str1==str2


strlen计算字符串的长度




五、应用

从键盘输入一个字符串,统计输入单词的个数,并将首字母大写


<span style="font-size:14px;">////  main.c//  单词首字母大写&统计单词个数// 使用gets函数从键盘输入一个字符串,判断输入的有多少个单词?首字母大写//  Created by Brisinga on 15/11/15.//  Copyright © 2015年 yan. All rights reserved.//#include <stdio.h>int main(int argc, const char * argv[]) {    //定义一个数组用来接收字符串    char str[100];    //定义一个flag判断是否是单词    int flag = 0;    //定义一个变量用来存储单词的个数    int count = 0;    //提示用户输入一个字符串    printf("请输入一个字符串:\n");    gets(str);    for (int i=0; str[i]!='\0'; i++) {        if (str[i]==' ') {  //如果str[i]为空格,则str[i+1]标记为单词            flag = 0;        }else if(flag==0){            count++;    //单词个数+1            str[i] = str[i]-32;    //单词首字母大写            flag = 1;                    }    }        printf("%s,单词个数为:%d\n",str,count); //输出结果    return 0;}</span>


0 0
原创粉丝点击