谁能向我解释为什么这不起作用?
#include <stdio.h>
#include <stdlib.h>
char *getline(int lim)
{
char c;
int i;
char *line;
line = malloc(sizeof(char) * lim);
i = 0;
while((c = getchar()) != '\n' && c != EOF && i < lim-1)
{
*line = c;
line++;
i++;
}
*line = '\0';
printf("%s", line);
return line;
}
我现在不担心返回值 - 只是为什么printf("%s", line)
不工作的原因。
谢谢!
编辑:固定,line = malloc(sizeof(char) * lim);
但它仍然无法正常工作。
解决方案:的地址*line
在整个函数中递增。当它被传递给 时printf()
,*line
指向 '\0' 因为那是它的地址被递增到的地方。使用一个临时指针来存储由malloc()
to分配的原始地址*line
,然后将该指针传递给printf()
,允许函数向上遍历指针。