C 如何将字符分配给数组?

C 如何将字符分配给数组?,c,C,问题: 如何将strchar分配给tempStr 如何将compress函数中的str替换为tempStr?我认为str=tempStr是错误的 谢谢您应该使用memcpy或strcpy(如果它是以null结尾的字符串) 在这个例子中,tempStr没有定义,所以我猜它是一个chars的数组。虽然,您可能需要在某个地方使用循环…1。您的代码缺少tempStr定义,例如char tempStr[LENGTH],请确保LENGTH足够大。 2.C字符串应该以'\0'结尾,因此需要在循环后设置temp

问题:

  • 如何将
    str
    char
    分配给
    tempStr
  • 如何将
    compress
    函数中的
    str
    替换为
    tempStr
    ?我认为
    str=tempStr
    是错误的

  • 谢谢

    您应该使用
    memcpy
    strcpy
    (如果它是以null结尾的字符串)


    在这个例子中,
    tempStr
    没有定义,所以我猜它是一个
    char
    s的数组。虽然,您可能需要在某个地方使用循环…

    1。您的代码缺少tempStr定义,例如char tempStr[LENGTH],请确保LENGTH足够大。
    2.C字符串应该以'\0'结尾,因此需要在循环后设置tempStr[j]='\0'。然后您可以使用strcpy copy tempStr to str。

    您似乎对字符串、数组和指针有点困惑

    charstr[]=“abc 123”
    表示内存中的某个地方有一个包含这些字符的数组。当这样声明时,“str”是常量,不能设置为指向其他地方

    相反,您需要分配每个单独的字符,这是您开始做的事情 在函数中使用语句
    tempStr[j]=str[i]:

    您需要循环遍历str中的字符并检查每个字符,然后将字符分配给tempStr,tempStr至少应与原始str[]数组一样大

    差不多

    int compress(char str[]) {
    
      char tempStr [256];
      int i,j, counter=0;
    
    
         if (!isdigit(str[i]) && (!isspace(str[i]))) {
            tempStr[j] = str[i];  
            j++;
            printf("%c", tempStr[i]); 
         } else {
            counter++;
         }
    
         str = tempStr;
    }
    
    char str[] = "abc abc abc 123";
    result = compress(&str);
    
    然后释放缓冲区

    strcpy( str, tempStr );
    
    鲍勃是你叔叔

    free( tempStr );
    
    tempStr
    是一个可容纳256个字符的字符数组

    但是这个语句会发生什么-
    str=tempStr

    当您说,
    tempStr
    时,您得到的是指向数组第一个元素的指针(即&tempStr[0])。因此,使用该语句,实际上并不是将
    tempStr
    的元素复制到
    str
    。右值的类型为
    char*
    ,但左值的类型为
    char[]
    ,这两种类型不兼容,导致编译错误


    要实际复制数组的元素,应该使用
    strcpy

    变量
    i
    的确切定义位置?我认为您的示例中缺少了示例的一部分。@Edwin:我明白了
    I
    的定义。(我没有看到任何关于这个问题的编辑历史)。有趣的是,我可以发誓以前没有。也许我只是起得太晚了。
    free( tempStr );
    
     char tempStr [256];