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