字符串(2)

4.字符串的常见函数

代码

复制代码
#include <stdio.h>
#include <string.h>
int main()
{
        char* str1 = "abc";
        char str2[100] = "abc";
        char str3[5] = { 'q','w','e','r' ,'\0' };


        printf("---------------------strlen(长度)---------------------------\n");
        ////细节:strlen这个函数在统计长度的时候,是不计算结束标记的
        ////细节:在window中,默认情况下,一个中文占2个字节
        //int len1 = strlen(str1);//3
        //int len2 = strlen(str2);//3
        //int len3 = strlen(str3);//4
        ////想要调用这个函数,直接把对应的字符串直接传递给他就行了,这个函数会给我们返回一个整数,就是当前字符串的长度

        //printf("%d\n", len1);
        //printf("%d\n", len2);
        //printf("%d\n", len3);
       第一个数组要留足够的位置,因为要拼接第二个数组的内容,也需要位置


        printf("---------------------strcat(拼接)---------------------------\n");
        ////细节:把第二个字符串中全部的内容,拷贝到 第一个字符串的末尾
        //       //前提1:第一个字符串的内容是可以被修改的
        //       //前提2:第2个字符串中剩余的空间可以容纳拼接的字符串
        //strcat_s(str2, str3);//abcqwer
        //printf("%s\n", str2);//qwer
        //printf("%s\n", str3);

        ////现在是把str2和str3给传递过去了,也就是说现在要把qwer拼在abc后面


        printf("---------------------strcpy(拷贝)---------------------------\n");

        //strcat_s(str2, sizeof(str2), str3);
        ////细节:把第2个字符串所有的内容,拷贝到第一个字符串中,把第一个字符串里面原有的内容给覆盖了
        ////     前提1:第一个字符串是可以被修改的
        ////     前提2:第一个字符串中空间可以容纳第二个字符串的完整内容

        //printf("%s\n", str2);//qwer
        //printf("%s\n", str3);//qwer



        printf("---------------------strcmp(比较)---------------------------\n");
        //细节:在比较的时候,要求顺序和内容完全一样,才叫做字符串一样
        ////完全一样:0
        ////只要有一个不一样:非0
        //int res = strcmp(str1, str2);
        //printf("%d\n", res);




        //printf("---------------------strlwr(变小写)---------------------------\n");
        //细节:只能转换英文的大小写,不能修改中文的大小写------1壹
        //_strlwr(str2) ;
        //printf("%s\n",str2);






        //printf("---------------------strupr(变大写)---------------------------\n");
        //细节:只能转换英文的大小写,不能修改中文的大小写
        _strupr_s(str2, sizeof(str2));
        printf("%s\n",str2);

        return 0;
}

5.用户登陆

复制代码
#include <stdio.h>
#include<string.h>
int main()
{
        /*
        需求:已知正确的用户名和密码,请用程序实现模拟用户登陆
        总共给3次机会,登录之后,请给出提示
        
        
        */

        //1.定义两个变量表示正确的用户名和密码
        char* rightUsername = "zhangtao";
        char* rightPassword = "1234qwer";

        

        //3.比较
        for (int i = 1; i <= 3; i++)
        {

                //2.键盘录入2个字符串,表示用户输入的用户名和密码
                printf("请输入用户名\n");
                char username[100];
                scanf("%s", username);

                printf("请输入密码\n");
                char password[100];
                scanf("%s", password);


                //验证
                printf("%s\n", username);
                printf("%s\n", password);

                if (!strcmp(username, rightUsername) && !strcmp(password, rightPassword))
                {
                        printf("登录成功\n");
                        break;
                }

                else
                {
                        if (i == 3)
                        {
                                printf("用户%s被锁定,请联系黑马程序员官方账号",username);
                        }


                        else
                        {
                                printf("登录失败,还剩下%d次机会\n", 3 - i);
                        }
                }



        }





        return 0;



}

6.统计次数

复制代码
#include <stdio.h>
#include<string.h>
int main()
{
        /*
             键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数
                 (不考虑其他字符)
        */

        //1.键盘录入一个字符串
        printf("请输入一个字符串\n");
        char str[100];
        scanf_s("%s", str);

        //2.统计该字符中大写字母字符,小写字母字符,数字字符出现的次数
        //遍历字符串得到了吗的每一个字符

        int bigcount = 0;
        int smallcount = 0;
        int numbercount = 0;

        for (int i = 0; i < strlen(str); i++)
        {
                char c = str[i];
                if(c>='a' && c<='z')
                {
                        smallcount++;
                }
                else if (c >= 'A' && c <= 'Z')
                {
                        bigcount++;
                }
                else if (c >= '0' && c <= '9')
                {
                        numbercount++;
                }
        }

        printf("大写字符出现了%d次\n", bigcount);
        printf("小写字符出现了%d次\n", smallcount);
        printf("数字字符出现了%d次\n", numbercount);












        return 0;



}

错误

数组名不能直接赋值

输入一行字符,统计其中有多少个单词,单词之间用空格分隔开

复制代码
if(c=='')//word新单词出现标志,word=0,一般出现空格就要换到另一个新单词
word=0;
else if(word==0)
{
word =1;//表示这是新单词
num++;//遇到非空格就回++,而前面是空格

#include <stdio.h>
int main()
char string[81],c;
int i,num=0;word=0;
gets(string);//不用scanf,不能录入空格
for(i;(c=string[i])!='\0';i++)
if(c=='')
word=0;
else if(word==0)
{word=1;
num++;
}
printf("%d words\n",num);
return 0;
相关推荐
max50060012 小时前
基于Meta Llama的二语习得学习者行为预测计算模型
人工智能·算法·机器学习·分类·数据挖掘·llama
王哥儿聊AI13 小时前
Lynx:新一代个性化视频生成模型,单图即可生成视频,重新定义身份一致性与视觉质量
人工智能·算法·安全·机器学习·音视频·软件工程
手握风云-15 小时前
优选算法的寻踪契合:字符串专题
算法
闭着眼睛学算法15 小时前
【华为OD机考正在更新】2025年双机位A卷真题【完全原创题解 | 详细考点分类 | 不断更新题目 | 六种主流语言Py+Java+Cpp+C+Js+Go】
java·c语言·javascript·c++·python·算法·华为od
IT古董15 小时前
【第五章:计算机视觉-项目实战之目标检测实战】2.目标检测实战:中国交通标志检测-(2)中国交通标志检测数据格式转化与读取
算法·目标检测·计算机视觉
MobotStone15 小时前
LLM 采样入门到进阶:理解与实践 Top-K、Top-P、温度控制
算法
杨小码不BUG16 小时前
CSP-J/S初赛知识点精讲-图论
c++·算法·图论··编码·csp-j/s初赛
LeaderSheepH17 小时前
常见的排序算法
数据结构·算法·排序算法
周杰伦_Jay18 小时前
【图文详解】强化学习核心框架、数学基础、分类、应用场景
人工智能·科技·算法·机器学习·计算机视觉·分类·数据挖掘
violet-lz18 小时前
Linux静态库与共享库(动态库)全面详解:从创建到应用
算法