#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 是一个指针,hello 也是,发生了什么事情?
str[i]
和hello[i]
都不是指针,它们都是字符。下一个问题是str[14]
超出了分配的内存范围--你只分配了14个字节,有效索引从0到13。 - Paul Hankinstr
是一个指针,而str[i]
不是。 - tkauslstrcpy(str, hello)
是正确的调用方式。 - Paul Hankinstrdup
不是标准函数。 - Jabberwocky