码迷,mamicode.com
首页 > 其他好文 > 详细

字符串相关函数-strcpy()与strcmp()

时间:2015-04-09 23:29:57      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

一些小问题,避免出现低级错误。

1、strcmp(s1,s2):

     字符串指针不见‘\0‘不回头,这个常在与单个字符作比较时写着写着就忘了.

char* p_ch1="this is an example!";
char* p_ch2="h";
printf("%d ",strcmp(p_ch1+1,p_ch2);
printf("%d ",strncmp(p_ch1+1,p_ch2,1));//若想比较"this is an example!"中第二个字符和"h"的关系,要用strncmp

    参数是 const char* 型,因此 " " 与 ‘ ‘的区别要清楚,后者在strcmp语境下看做int。 " "的一定是个指针,‘ ‘看情况,可以看做数字ASCII码或字符,所以在C++的string::iterator中,判断 *it 用  ‘ ‘。

char *p_ch = "hehenmb";
strncmp(p_ch,h,1);       //error
strncmp(p_ch,"h",1);      

2、strcpy(s1,s2):

    将s2全部拷入s1‘‘(不考虑内存),是在s1指针指向的位置处进行粘贴,s1处以及原来的s1后面的数据都消失,变成s2的内容。

 

下面是一个单词单数变复数的简单例子:

    规定-y变成-ies,-ch/-sh变成-ches/-shes,其他都在原单词末尾+s。

char* WordTrans(char* ch){
    if(!strcmp(ch,"y")){
        strcpy(ch,"ies");
        return ch;
    }
    if(!strcmp(ch,"h")){
        if(!strncmp(ch-1,"c" || !strncmp(ch-1,"s"))){   //这个写法中,在比较ch-1时是单个比较
            strcpy(ch+1,"es");
            return ch;
        }
        else{
            strcpy(ch+1,"s");
            return ch;
        }
    }
    else{
        strcpy(ch+1,"s")
        return ch;
    }
}
int main(){
    char word[256];
    scanf("%s",word);
    char* p_ch=word;
    WordCmp(p_ch+strlen(word)-1);
    printf("%s\n",word);
    return 0;
}

先这样了,以后再补。

字符串相关函数-strcpy()与strcmp()

标签:

原文地址:http://www.cnblogs.com/young8848/p/4412133.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!