【发布时间】:2020-11-28 05:55:45
【问题描述】:
我正在尝试创建一个函数,当用户按下 ENTER 以外的任何键时动态分配内存。代码编译时没有错误或警告(在 gcc 上),但无法正常工作......有人能告诉我到底出了什么问题吗?
如果我修改函数以返回指向 char i 的指针,例如
char * getString(char * string);
但是我仍然对原始代码以及为什么不起作用感到好奇,非常感谢任何解释。提前感谢所有花时间阅读本文的人。
#include <stdio.h>
#include <stdlib.h>
void getString(char * string);
int main(void){
char * str = NULL;
printf("Write something:\n");
getString(str);
printf("You wrote:\n");
printf("%s\n", str);
free(str);
return 0;
}
void getString(char * string){
char ch;
int length = 0;
do{
scanf("%c", &ch);
if(length == 0){
string = (char *) malloc(sizeof(char));
} else {
string = (char *) realloc(string, (length + 1) * sizeof(char));
}
if(string == NULL){
printf("ERROR: memory could not be allocated!!\n");
}
string[length] = ch;
length++;
} while(ch != '\n');
string[length - 1] = '\0';
}
【问题讨论】:
-
在
getString(char * string)内更改string不会影响调用代码的str。
标签: c