精华内容
下载资源
问答
  • C语言字符数组常用函数实现

    千次阅读 2019-07-20 13:10:10
    C语言中字符数组的常用函数有以下几个: strlen(str):返回字符串str的长度; strcpy(str1,str2):将字符串str2复制到字符串str1中,并返回字符串str1; strchr(str,ch):返回在字符串str中第一次出现指定的字符ch的...

    C语言中字符数组的常用函数有以下几个:

    strlen(str):返回字符串str的长度;
    strcpy(str1,str2):将字符串str2复制到字符串str1中,并返回字符串str1;
    strchr(str,ch):返回在字符串str中第一次出现指定的字符ch的地址;
    strcat(str1,str2):将字符串str2连接到字符串str1的尾部,并返回连接后的字符串str1;
    strcmp(str1,str2):比较两个字符串str1和str2,若str1大于(等于、小于)str2,则返回大于(等于、小于)0的数;
    strstr(str1,str2):在字符串str1中查找指定的字符串str2第一次出现的位置,并返回地址值;
    函数的实现:
    1.strlen(str)

    #include <stdio.h>
    #include <string.h>
    #define N 100
    
    void main()
    {
        int i = 0;
        char str[N];
        printf("input a str:");
    
    /*
        //字符串的输入 
        fgets(str,6,stdin);
        gets(str);
        for(i = 0;i < 5;i++)
           scanf("%s",str);
        i = strlen(str);        //使用strlen();
    */
        while( str[i] != '\0')    //自定义实现
        {
            i++;
        }    
        printf("%d\n",i);
        
    }
    

    2.strcpy(str1,str2)

    #include <stdio.h>
    #include <string.h>
    #define N 100
    
    void main()
    {
        int i = 0;
        int j = 0;
        char str1[N] = {0};
        char str2[N] = {0};
        printf("input a str1:");
        gets(str1);
        printf("input a str2:");
        gets(str2);
        
    //   strcpy(str1,str2);        //strcpy();
        while(str2[i] != '\0')    //自定义实现strcpy();
        {
            str1[i] = str2[i];
            i++;
        }
        puts(str1);    
    }
    

    3.strchr(str,ch)

    #include <stdio.h>
    #include <string.h>
    #define N 100
    
    void main()
    {
        int i = 0;
        char ch;
        char str[N];
        printf("input a str:");
        gets(str);
        printf("input a char:");
        ch =  getchar();
    
    //    printf("%d\n",strchr(str,ch));    //打印地址
    //    printf("%s\n",strchr(str,ch));    //打印ch及后面的字符
        while(str[i] != '\0')            //自定义实现strchr();
        {
            if(str[i] == ch)
                break;
            i++;
        }
        printf("%d\n",i);
    }
    

    4.strcat(str1,str2)

    #include <stdio.h>
    #include <string.h>
    #define N 100
    
    void main()
    {
        int i = 0;
        int j = 0;
        char str1[N] = {0};
        char str2[N] = {0};
        printf("input a str1:");
        gets(str1);
        printf("input a str2:");
        gets(str2);
        
        strcat(str1,str2);        //strcat();
        
    /*    while(str1[i] != '\0')    //自定义实现strcat();
            i++;
        while(str2[j] != '\0')
        {
            str1[i+j] = str2[j];
            j++;
        }
     */  
        puts(str1);
            
    }
    

    5.strcmp(str1,str2)

    #include <stdio.h>
    #include <string.h>
    #define N 100
    
    void main()
    {
        int i = 0;
        int j = 0;
        char str1[N] = {0};
        char str2[N] = {0};
        printf("input a str1:");
        gets(str1);
        printf("input a str2:");
        gets(str2);
        
     //   j = strcmp(str1,str2);            //strcmp();
     //   printf("%d\n",j);
        
        while((str1[i] == str2[i]) && (str1[i] != '\0'))//自定义实现strcmp();打印不同字符的差值
                i++;
        printf("%d\n",str1[i] - str2[i]);
        
    }
    

    6.strstr(str1,str2)

    #include <stdio.h>
    #include <string.h>
    #define N 100
    
    void main()
    {
        int i = 0;
        int j = 0;
        int k = 0;
        char str1[N] = {0};
        char str2[N] = {0};
        printf("input a str1:");
        gets(str1);
        printf("input a str2:");
        gets(str2);
    
        //  j =  strstr(str1,str2);    //strstr();
        //   printf("%d\n",j);
        while(str1[i] != '\0')      //自定义实现strstr();打印查找到的地址值,若没有查到,则返回0
        {
            if(str1[i] != str2[j])
                i++;
            if(str1[i] == str2[j])
            {
                i++;
                j++;
    
                if(str2[j] == '\0')
                {
                    k = 0;
                    break;
                }
                if(str1[i] != str2[j])
                {
                    k = 1;
                }
            }
        }
    
        if(k == 1)
            printf("%d\n",0);
        else if(k == 0)
            printf("%d\n",i-j+1);
    
    }
    

    初学C语言,以上代码若有错误,请指正!谢谢!!!

    展开全文
  • 自己编写一个字符串链接函数函数首部定义为void fun(char a[],char b[])其功能是:将形参数组b中的字符顺序...main函数中输入两字符串赋给字符数组str1和str2,调用fun函数,实现两字符串的连接,并将连接好后的...

    自己编写一个字符串链接函数:函数首部定义为void fun(char a[],char b[])其功能是:将形参数组b中的字符顺序连接到形参数组a的字符串后面。注:不能使用字符串的复制和连接函数。例如:a中的字符串为hello,b中的字符串为123,则字符串a中的内容为hello123。

    main函数中输入两字符串赋给字符数组str1和str2,调用fun函数,实现两字符串的连接,并将连接好后的字符串输出。

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        void fun (char a[],char b[]);
        char str1[100],str2[100];
        gets(str1);
        gets(str2);
        fun(str1,str2);
        return 0;
    }
    void fun (char a[],char b[])
    {
        int num1=0,num2=0,i;
    num1=strlen(a);
    num2=strlen(b);
    for(i=0;i<=num2;i++)/*i<=num2而非i<num2,因为数组b中的\0没有赋值到数组a中,数组a没有输出结束符号,导致乱码的输出*/
    {
        a[num1++]=b[i];
    }
    printf("%s",a);
    }

     

    转载于:https://www.cnblogs.com/boycelee/p/4564976.html

    展开全文
  • strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数...

    strcpy和memcpy主要有以下3方面的区别。
    1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
    2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
    3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

    strcpy(a,b);//把char类型的字符串b复制到a中,不限制大小可能会导致a中溢出
    memcpy(a,b,n)把b中n长度的任何类型内容复制到a中,返回指向a 的指针。

    头文件:#include<string.h>

    转载于:https://www.cnblogs.com/zwx7616/p/11243309.html

    展开全文
  • 之前我们学习数据类型的时候,有一个类型 char ,这个类型允许我们在里边放一个字符 char variable1='o'; char variable2='k';... //C++当中字符数组赋值,''单引号中不能为空 char talk[1...

    之前我们学习数据类型的时候,有一个类型 char ,这个类型允许我们在里边放一个字符

    char variable1='o';

    char variable2='k';

    #include <iostream>
    using namespace std;
    
    
    int main(){
        //C++当中字符数组赋值,''单引号中不能为空 
        char talk[10]={'I',' ','a','m',' ','h','a','p','p','y'};
        for(int i=0;i<10;i++){
            cout<<talk[i];
        }
        cout<<endl;
    }

    使用字符二维数组制作输出一个钻石图形。

    #include <iostream>
    using namespace std;
    
    
    int main(){
        //C++当中字符数组赋值,''单引号中不能为空 
        char talk[5][5]={{' ',' ','*'},
                        {' ','*',' ',' ','*'},
                        {'*',' ',' ',' ','*'},
                        {' ','*',' ','*'},
                        {' ',' ','*'}};
        for(int i=0;i<5;i++){
            for(int j=0;j<5;j++)
                cout<<talk[i][j];
                cout<<endl;
        }
        cout<<endl;
    }
    这个字符数组的长度是多少?
    char talk[10]={'I',' ','a','m',' ','h','a','p','p','y'};
    字符串 I am happy
    string talk="I am happy";
    两者意义上市一致的,但是长度上是不一致的。c++在字符y的后边自动添加了一个'\0',这个一个符号,表示字符串的结束。
    string 和我们之前学的int float double boolean char 基本数据类型不同,可以直接在c++程序中使用。
    string 是不能在c++中直接使用。
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main(){
        int a=1;
        cout<<a;
        //s的长度是多少呢? 是11 c++在字符串使用的时候自动添加了一个'\0'
        //,当c++系统输出字符串的时候检测到 '\0',结束 
        string s="I am happy";
        //arr的长度是多少呢? 是11 
        char arr[]="I am happy";
        //arr2的长度是多少呢?是10 
        char arr2[]={'I',' ','a','m',' ','h','a','p','p','y','\0'};
        //arr与arr2 是等价的
        cout<<endl<<arr;
        cout<<endl<<arr2;
        cout<<endl;
        cout<<s;
        return 0;
    }

    char str[5];

    cin>>str;

    如果输入字符串为Beijing字符串长度超出,也不会报错,(与其他数据类型不同)但是会破坏其他空间中的数据,有可能引发问题。


     

    使用字符串处理函数,进行字符串的操作

    第一个,字符串连接

    使用strcat(char[],const char[])

    举例:

    #include <iostream>
    #include <string.h>
    using namespace std;
    
    
    int main(){
        //C++当中字符数组赋值,''单引号中不能为空 
        char str1[30]="People's Republic of ";
        char str2[]="China";
        cout<<strcat(str1,str2);
    
    }

     第二个,字符串复制

    #include <iostream>
    #include <string.h>
    using namespace std;
    
    
    int main(){
        //C++当中字符数组赋值,''单引号中不能为空 
        char str1[30];
        char str2[]="China";
        strcpy(str1,str2);
        cout<<str1<<"   ~    "<<str2;
    
    }

     第三个,字符串比较

    #include <iostream>
    #include <string.h>
    using namespace std;
    
    
    int main(){
        //按照字母表的顺序,在后边就大 ASCII
        char str1[]="Zoa";
        char str2[]="Zoble";
        int x=strcmp(str1,str2);
        cout<<x;
    
    }

    如果相等为0,如果大于为1,如果小于为-1;

    第四个,字符串长度函数

    #include <iostream>
    #include <string.h>
    using namespace std;
    
    
    int main(){
        //字符串"Zoa",实际上等价于{'Z','o','a','\0'} 
        //字符串长度函数 求的值是实际长度,不是真实长度 
        char str1[10]="Zoa";
        char str2[30]="Zoble";
        int x=strlen(str1);
        int y=strlen(str2);
        cout<<x<<"~~~"<<y;
    
    }

     

    转载于:https://www.cnblogs.com/qingyundian/p/7889045.html

    展开全文
  • //编写一个程序,将字符数组s2中的全部字符复制字符数组s1中。不用strcpy函数。 //复制时,'\0'也要复制过去。'\0'后面的字符不复制 #include <stdio.h> #include <string.h> int main(){ char s1[80...
  • /*编写一个程序,将字符数组s2中的全部字符复制字符数组s1中,不用strcpy函数复制时,‘\0’ 也要复制过去。‘\0’后面的字符不复制*/ #include <stdio.h> #include <string.h> int main() { ...
  • 编写一个程序,将字符数组s2中的全部字符复制字符数组s1中。不用strcpy函数。负值时,’\0’也要复制过去,’\0’后面的字符不用复制。 【输入输出示例】 Hello Hello 【C语言】 #include #include int main...
  • //题目:编一程序,将字符数组s2中的全部字符复制字符数组s1中。不用strcpy函数。 //复制时,'\0'也要复制过去。'\0'后面的字符不复制。 #include &lt;stdio.h&gt; #include &lt;string.h&gt; ...
  • C程序设计(第四版) 谭浩强 习题6.15 个人设计习题 6.15 编写一个程序,将字符数组s2中的全部字符复制字符数组s1中。不用strcpy函数复制时,‘\0’也要复制过去。‘\0’后面的字符不复制。代码块:#include #...
  • 字符串处理函数; 字符串输入输出函数;字符串连接函数;字符复制函数;字符串比较函数; 求字符串长度函数;
  • 字符数组2复制字符数组1中 3.strcmp(字符数组1,字符数组2) 根据字典序比较字符数组1和2,如果1大,则返回一个正整数;如果相等,则返回0;如果2大,则返回一个负整数。 4.strcat(字符数组1,字符数组2) 将...
  • #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include int mystrcpy(char *p,char *p1) { while (*p1 != '\0') { *(p++) = *(p1++); } *p = '\0';... char a1[100]
  • 文章目录字符串和字符串结束标志字符数组的输入输出用scanf函数输入使用字符串处理函数puts函数——输出字符串的函数gets函数——输入strcat函数——字符串连接符strcpy和strncpy函数——字符串复制函数strcmp函数...
  • 字符数组的相关函数

    2017-03-29 12:58:54
    定义一个字符串char a[20],和一个字符串c[]=”i am a teacher!”; 把c复制到a中就可以这样用:strcpy(a,c); 这个函数包含在头文件 (去掉#)中. 程序代码:#include #include void main() { char a[20],c[]=
  • 操作字符数组 memcpy(target, source, len) 复制字符串数组 target指向用于存储复制内容的目标数组,类型强制转换为void*指针。 surce指向要复制的数据源,类型强制转换为void*指针。 len代表要复制的字节个数。 ...
  •  功能说明:将字符串复制字符数组中。该函数有两个参数。第一个参数为“目标数组”,第二个参数为“字符串”。  参考实例:  var  arrChar: array[0..255] of Char; // 这里声明了长度为256的Char型...
  • 5.3字符数组&字符串

    2020-06-30 10:30:50
    5.3 字符数组&字符串 说明:本部分涉及到指针的一部分内容,后续补充 5.3 字符数组&字符串 字符数组与字符串的概念 字符数组的定义与初始化 ...4. strcpy和strncapy——字符串复制函数 5. s
  • #include <stdio.h> #include <string.h>... printf("请输入第一行字符串:"); gets(s1); printf("请输入第二行字符串:"); gets(s2); for(i=0;s2[i]!='\0';i++) { s1[i]=s2[i];
  • 1、puts(字符数组):将一个以’\0’结束的字符串输出。 2、gets(字符数组):从终端读入一个字符串到数组,自动在末尾加入’\0’ 3、strcat(字符数组1,字符数组2):将2连接到1后面,注意:字符数组足够大,...
  • C++ 字符数组字符数组相互赋值

    千次阅读 2019-10-30 10:41:52
    功能:把src所指由NULL结束的字符复制到dest所指的数组中。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 例如: #include <iostream> #incl...
  • 字符数组1.数组几个需要注意的点2.0的五种形式3.字符数组4.两个奇怪的字:烫、屯5.系统函数1.复制2.求字符串长度3.4.5. 1.数组几个需要注意的点 数组名arr表示整个数组,只有如下情况: 1.在定义数组的同一个函数中...
  • 1.strcat函数 ...该函数用来将第二个字符数组中的字符串复制到第一个字符数组中去 3.strcmp函数 把两个字符串做比较假如返回0代表相同,返回其他则不同。 4.strupr函数 将字符串中小写的字母转换为
  • 第七章_字符数组

    2020-04-05 19:30:09
    概述字符数组的定义字符数组的初始化声明时字符数组的初始化声明后字符数组的初始化字符串的初始化字符数组的引用字符数组和字符串的关系字符数组的输入和输出字符数组的输出不具有\0标记具有\0标记字符数组的输入...
  • #include #include int main() { char s1[80],s2[80]; int i; printf("input s2:"); scanf("%s",s2); for(i=0;i(s2);i++) s1[i]=s2[i]; printf("s1:%s\n",s1); return 0; }
  • #include &... 不用 strcpy 实现将一个字符复制到另一个字符串中 */ //写一个这样的函数 void Strcpy(char* s1, const char* s2) { while (*s2 != '\0') { *s1++ = *s2++; } *s1 = *s2; //把

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,207
精华内容 882
关键字:

字符数组复制函数