将arr的字符逐个连接到空字符串

时间:2013-07-02 19:29:33

标签: c string

我有一个空字符串 char前缀[100] =“”和另一个字符串,如 char arr [] = {a,b}

我的任务是将arr的字符逐个连接到空字符串前缀。

我尝试了以下内容,但它显示的警告为:

初始化使得整数指针没有强制转换[默认情况下启用]

我的代码:

for(i=0;i<len;i++)
    {
        char *current=str[i];
        strcat(prefix,current);
    }

4 个答案:

答案 0 :(得分:3)

str[i]需要&在前面,如&str[i]

答案 1 :(得分:3)

macduff的回答是正确的,但我建议使用strncat()而不是循环,因为它是标准的库函数,并且没有理由不使用它来简化代码。用法:

strncat(prefix, arr, len);

答案 2 :(得分:0)

strcat()期望它的参数都是以空字符结尾的字符串。您的current参数不是这种情况,因为您只是传递单个字符的地址。可以使用strncat()来避免这种情况,但这不会完成“逐个将arr的字符连接到空字符串前缀”的任务。你可能需要:

  1. 找到当前prefix字符串的结尾,这是您要追加的地方
  2. 遍历arr[]数组中的字符,将每个字符放在适当的位置,然后
  3. 确保您正确终止最终结果

答案 3 :(得分:0)

#include <stdio.h>
#include <string.h>

int main(void){
    char prefix[100] = "";
    char arr[] = {'a', 'b'};
    //concatenate one by one
    //case 1
    int i, len = 2;
    int offset = 0;
    for(i=0;i<len;++i){
        offset += sprintf(prefix + offset, "%c", arr[i]);
        printf("DEBUG1:%s\n", prefix);
    }
    //case 2
    *prefix = '\0';
    char *str[] = {"a", "b"};
    for(i=0;i<len;++i){
        strcat(prefix, str[i]);//strcat is expecting a sequence that ends with '\0'
        printf("DEBUG2:%s\n", prefix);
    }

    return 0;
}