C编程获取输入

Pra*_*abu 2 c algorithm

我如何不断获得用户输入(字符串),直到在C中按下输入就像stringC++中的类一样?

我不知道输入大小,所以我不能声明一个固定大小的变量,甚至我不能使用malloc()或动态分配内存calloc().

有没有办法将其作为一个单独的函数来实现?

the*_*ejh 7

正如H2CO3所说,你应该分配一个缓冲区malloc(),然后realloc()在它填满时调整它的大小.像这样:

size_t bufsize = 256;
size_t buf_used = 0;
int c;
char *buf = malloc(bufsize);
if (buf == NULL) { /* error handling here */ }
while ((c = fgetc(stdin)) != EOF) {
  if (c == '\n') break;
  if (buf_used == bufsize-1) {
    bufsize *= 2;
    buf = realloc(buf, bufsize);
    if (buf == NULL) { /* error handling here */ }
  }
  buf[buf_used++] = c;
}
buf[buf_used] = '\0';
Run Code Online (Sandbox Code Playgroud)