【发布时间】:2021-12-31 13:19:14
【问题描述】:
当我使用普通数组执行此操作时,它可以工作,但使用指针却不行。
#include <stdio.h>
#include <string.h>
int main()
{
char source[]="Agdhefhe";
char *accum = "";
for(int i=0;i<=sizeof(*source)/sizeof(char);i++)
{
for(int j=0; j<i; j++)
strcat(accum,source);
}
printf("%s",accum);
return 0;
}
【问题讨论】:
-
你认为
accum指向的缓冲区中有多少额外字符空间? -
嗨 varkus,欢迎来到 stackoverflow。我认为@adrian-mole 的意思是您的
accum是一个指向内存中没有分配空间来保存您正在累积的字符串的位置的指针。你需要char *accum = malloc(...)。 -
我认为不是很多。有没有办法用指针来做,还是我需要指定数组的大小?
-
哦,谢谢大家的帮助!
-
循环的目的是什么?无论
char的宽度如何,sizeof(*source)的定义为 1,sizeof(char)的定义为 1。即使没有strcat错误,这段代码也没什么意义。