【问题标题】:Using strcmp with Index of Array将 strcmp 与数组索引一起使用
【发布时间】:2023-03-19 09:45:01
【问题描述】:

我正在尝试对字符串进行处理,但是

  1. 编译器给出 15,18 行无法将 Char 转换为常量 char;
  2. 编译器给出无法将 Char 转换为 Char For 19,20 Lines; 找不到这有什么问题?

    int main () 
    { 
        int i=0; 
        int j=0;
        int space = 0; 
    
        char cmp[50]; 
        char *p[50][100];
    
        for (i=0;i<space;i++) { 
            for ( j = i + 1;j <=space; j++ ) { 
                if( (strcmp(p[i],p[j])=0)) //15 {  
                    strcpy (cmp,p[i]); //18
                    strcpy (p[i],p[j] ); //19
                    strcpy(p[j], cmp); //20
                } 
            }
        }
    }
    

【问题讨论】:

  • 这肯定是你标题中的i...
  • 顺便说一句,我包含了字符串库!
  • 除其他外,在 == 内部而不是 =
  • 请注意strcpy() 依赖于空终止符来停止复制。也许使用strncpy() 是一个更好的主意。
  • 您是否为strcmp() 和strcpy() 添加了正确的标题? #include &lt;string.h&gt;

标签: c string strcmp


【解决方案1】:

试试这段代码,但让我告诉你,如果空格的值是某个正数,这段代码会交换相同的字符串。

int main () 
{

    int i=0; 
    int j=0;
    int space = 0; //I hope you initialized the value of space to a different number.

    char cmp[50]; 
    char p[50][100];// do not use *p[50][100]

    for (i=0;i<space;i++) { 
        for ( j = i + 1;j <=space; j++ ) { 
            if( (strcmp(p[i],p[j])==0))  {  //use == for comparison.
                strcpy (cmp,p[i]); 
                strcpy (p[i],p[j] ); 
                strcpy(p[j], cmp); 
            } 
        }
    }
}

【讨论】:

    【解决方案2】:

    这么多问题.....

    for (i=0;i<space;i++) { 
    

    您认为space 的价值是多少?
    如果space 为零,你认为这个循环会运行多少次?
    您希望它运行多少次?

    【讨论】:

    • 我想控制数组大小的结束,所以我应该分配空间=50
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多