我有一个空字符串 char前缀[100] =“”和另一个字符串,如 char arr [] = {a,b} 。
我的任务是将arr的字符逐个连接到空字符串前缀。
我尝试了以下内容,但它显示的警告为:
初始化使得整数指针没有强制转换[默认情况下启用]
我的代码:
for(i=0;i<len;i++)
{
char *current=str[i];
strcat(prefix,current);
}
答案 0 :(得分:3)
str[i]
需要&
在前面,如&str[i]
。
答案 1 :(得分:3)
macduff的回答是正确的,但我建议使用strncat()
而不是循环,因为它是标准的库函数,并且没有理由不使用它来简化代码。用法:
strncat(prefix, arr, len);
答案 2 :(得分:0)
strcat()
期望它的参数都是以空字符结尾的字符串。您的current
参数不是这种情况,因为您只是传递单个字符的地址。可以使用strncat()
来避免这种情况,但这不会完成“逐个将arr的字符连接到空字符串前缀”的任务。你可能需要:
prefix
字符串的结尾,这是您要追加的地方arr[]
数组中的字符,将每个字符放在适当的位置,然后答案 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;
}