【发布时间】:2021-04-26 17:46:30
【问题描述】:
我正在尝试使用动态内存分配,但我无法找出指针。 我把第一部分记下来了。
void addtext(char **wordarray)
{
char word[N];
char endword[N] = "end";
int i=0;
int words=0;
while (scanf("%19s", word), strcmp(word,endword))
{
words++;
wordarray = realloc(wordarray, words*sizeof(char *));
wordarray[words-1] = malloc (N*sizeof(char));
strcpy(wordarray[words-1], word);
}
for (i=0; i<words; i++)
printf("%s\n", wordarray[i]);
return ;
}
但是当我尝试在不同的函数中调用同一个数组时遇到了麻烦。
void savetext(char **wordarray)
{
FILE *savedtext;
int i=0;
savedtext = fopen("Saved Text.txt","wt");
while(wordarray[i][0]!= '\0')
{
fputs(wordarray[i++],savedtext);
fputs(" ",savedtext);
}
return ;
}
我的主要功能如下所示:
int main (void)
{
char **wordarray;
addtext(wordarray);
savetext(wordarray);
return 0;
}
代码的第二部分显然是错误的,但我不确定如何准确调用这些函数。我以前的程序没有使用任何内存分配,所以我没有为指针烦恼。我对 c 真的很陌生,所以任何帮助都将不胜感激。
【问题讨论】:
-
double *是一个“双指针”。char **是“指向 char 的指针”。 -
wordarray未初始化,因此realloc(wordarray)是未定义的行为。
标签: c pointers pass-by-reference dynamic-memory-allocation c-strings