我正在尝试创建一个程序,该程序将为读取新字符分配内存,直到读取空字符为止,但这似乎不起作用
被注释的行上的printf(在while循环条件之后)向我显示了c + i指向的值,我只是检查了一下,即使它向我显示了字符NULL(它只是打印'-- ',我假设这是字符NULL?)循环继续进行。
char *read(char *c) {
int i=0;
c=(char*)malloc(1);
scanf("%c", c+i);
while (*(c+i)) {
//printf("-- %c --", *(c+i));
i++;
c=(char*)realloc(c,i+1);
scanf("%c", c+i);
}
return c;
}
答案 0 :(得分:1)
您的实现不会停止,因为它从不读取NULL
字符。当您按RETURN / ENTER之类的键时,控制台会生成换行符序列(在某些操作系统(如Linux)中为“ \n
”,在某些操作系统(如Windows)中为“ \r\n
”)。
话虽如此,然后您可以更改您的while
条件以检查读取的字符是'\n'
还是'\r'
以结束读取,而不是检查它是否是{{1 }}。不过,一旦用户按下返回键,该解决方案就会停止读取。