标题:关于自己在函数里编写并且调用strcmp strcpy函数!。。。。。。。
只看楼主
小弱
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-12-14
结帖率:100%
已结贴  问题点数:20 回复次数:9 
关于自己在函数里编写并且调用strcmp strcpy函数!。。。。。。。
#include<stdio.h>
#define max 6


int StrCmp(char a[max][100],char b[max][100]);
void StrCpy(char a[max][100],char b[max][100]);

int main()
{
    char ch[max][100];
    char temp[100];
    char null[1][100]="0";
    int i,j;
   
   
   
    for(i=0;i<6;i++){
        printf("Enter your string:");      //获取输入
        gets(ch[i]);
   

    for(i=0;i<6;i++){
        for(j=i+1;j<6;j++){
            if(StrCmp(ch[i],ch[j])==0&&StrCmp(ch[j],null[0])!=0)
                StrCpy(ch[j],null[1]);
          }
    }
        

     for(i=0;i<5;i++){
            for(j=i+1;j<6;j++)
            {
                if(StrCmp(null[0],ch[i])==0&&StrCmp(null[0],ch[j])!=0)
                {
                    StrCpy(temp,ch[i]);
                    StrCpy(ch[i],ch[j]);
                    StrCpy(ch[j],temp);
                }
            }
      }
        for(i=0;i<6;i++)
            if(StrCmp(null,ch[i])!=0)
            puts(ch[i]);
}





int StrCmp(char a[max][100],char b[max][100]){
            int i,j=0;
            int res;

           
           while(!(res=a[i][j]-b[i][j])&&b[i][j])    j++;
           if(res<0)         res=-1;
           else if(res>0)    res=1;
           return res;
}




void StrCpy(char a[max][100],char b[100]){
                 int i=0,j=0;
                 while(b[j]!="0"){
                 
                 a[i]=b[j];
                 i++;
                 j++;
             }
}

}
      
           已经完全混乱了  二维数组什么的声明还有调用 还有传递都搞不清了  求指导!。。。。
搜索更多相关主题的帖子: null Enter include 
2012-12-15 14:07
小弱
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-12-14
得分:0 
是要删除几个字符串中相同的字符串 然后把剩余字符串移到前面来  不能用string 库函数  
比如 cmd cmd dmc dam cmd   要变成 cmd dmc dam
2012-12-15 14:11
小弱
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-12-14
得分:0 
我写的这段报了好多错。。。。
应该是声明还有传递 调用上出的问题。。。
泪奔啊
想好久都想不明白了。。
二维数组神马的。。
2012-12-15 14:12
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
看楼主问题,没必要用二维吧,,,


[fly]存在即是合理[/fly]
2012-12-15 14:45
小弱
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-12-14
得分:0 
回复 4楼 azzbcc
要求用二维。。。
2012-12-15 14:56
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:0 
你这很乱啊,没法看,输入输出用二维数组还行,strcmp strcpy还用二维数组?题目理解错了吧?看看题目

小小战士,战士中的战斗机!
2012-12-15 18:41
小弱
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2012-12-14
得分:0 
回复 6楼 小小战士
题目就是删除相同的字符串 然后后面的移到前面。。。。然后说一定要用二维数组 不可以用strcmp strcpy库函数 除非写子函数然后调用。。。

。。。。至于哪里用二维数组。。
好吧。。

不会。。。。
2012-12-15 20:03
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:0 
#include<stdio.h>
#include<string.h>
#define max 6
/*比较字符串大小*/
int str_cmp(char *p1,char *p2)
{
        int i=0;
        while(p1[i]==p2[i]&&p1[i]!='\0'&&p2[i]!='\0')//不相等或遇到'\0'退出
        i++;
        if(p1[i]>p2[i]) return 1;//大于
        else
        if(p1[i]<p2[i]) return  -1;//小于
        else    return 0;//等于
}
int main()
{
    int i,j;
    char str[max][100];
    printf("请输入%d个字符串:\n",max);//输入串
    for(i=0;i<max;i++)
        scanf("%s",str[i]);

    for(i=0;i<max-1;i++)//循环遍历
    {
        for(j=i+1;j<max;j++)
        {
            if(str_cmp(str[i],str[j])==0)//相等
            {
                memset(str[j],'\0',sizeof(str[j]));//置空
            }
        }
    }
    printf("str:\n");
    for(i=0;i<max;i++)//输出
    {
        if(str_cmp(str[i],"")!=0)//非空
        printf("%s\n",str[i]);//输出
    }
    return 0;
}

小小战士,战士中的战斗机!
2012-12-16 00:21
xiaomingtutu
Rank: 2
等 级:论坛游民
帖 子:10
专家分:35
注 册:2012-12-14
得分:0 
回复 8楼 小小战士
int str_cmp(char *p1,char *p2)
 {
         int i=0;
         while(p1[i]==p2[i]&&p1[i]!='\0'&&p2[i]!='\0')//不相等或遇到'\0'退出
         i++;
         if(p1[i]>p2[i]) return 1;//大于
         else
         if(p1[i]<p2[i]) return  -1;//小于
         else    return 0;//等于
 }
貌似strcmp函数不是这样的,如果只是比较字符是否相等倒是可以,而且有指针为形参的时候最好在前面先加上个assert函数来判断一下,以免有空指针时出现问题吧!
2012-12-16 00:36
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:20 
没必要吧?你会把NULL传入strcmp中?你试试c库中的strcmp和这个str_cmp有什么区别

小小战士,战士中的战斗机!
2012-12-16 00:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-391366-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.751790 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved