关闭

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

标签: c语言字符串
127人阅读 评论(0) 收藏 举报
分类:

------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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5777次
    • 积分:259
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档