0

我有一个空字符串char prefix[100]=""和另一个字符串,如char arr[]={a,b}

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

我尝试了以下方法,但显示警告为:

初始化使指针从整数而不进行强制转换[默认启用]

我的代码:

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

4 回答 4

3

str[i]需要&在前面有一个like &str[i]

于 2013-07-02T19:31:16.457 回答
3

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

strncat(prefix, arr, len);
于 2013-07-02T19:37:03.873 回答
0

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

  1. 找到当前prefix字符串的结尾,这是您要追加的地方
  2. 循环遍历arr[]数组中的字符,将每个字符放在适当的位置,然后
  3. 确保正确终止最终结果
于 2013-07-02T20:13:01.240 回答
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;
}
于 2013-07-02T22:00:11.900 回答