【发布时间】:2018-10-24 15:35:48
【问题描述】:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main() {
const char* hello = "Hello, World!";
char *str = malloc(14 * sizeof(char));
for (int i = 0; i < 14; i++) {
strcpy(str[i],hello[i]);
}
str[14]='\0';
printf("%s\n", str);
return 0;
}
编译警告:
警告:传递 'strcpy' 的参数 1 使指针从整数而不进行强制转换 [-Wint-conversion] 注意:预期的 'char *' 但参数是 'char' 类型 警告:传递 'strcpy' 的参数 2 使指针从整数而不进行强制转换 [-Wint-conversion]str是一个指针,你好,这是怎么回事?
【问题讨论】:
-
str[i]和hello[i]都不是指针——都是字符。下一个问题是str[14]不在分配内存的末尾——您分配了 14 个字节,有效索引从 0 到 13。 -
str是指针,str[i]不是。 -
strcpy(str, hello)是正确的调用。 -
... 没有循环.
-
@PaulHankin
strdup不是标准的。