如何在EOF之前读取无限制的字符串并将它们放在C中?

时间:2015-03-17 14:37:49

标签: c arrays

例如,用户输入了3行条目,我想将它们分割为单词并将它们存储在char数组中。

项:

  Banana apple kiwi cherry\n
  horse car blue jacket\n
  bla bla bla  ^d

该条目可能包含更多或更少的行。我不知道条目中有多少单词。我只知道EOF的入口结束,我需要将所有单词存储在一个数组中。你能帮帮我吗?

1 个答案:

答案 0 :(得分:-1)

#include <stdio.h>
#include <stdlib.h>


int main(){
    char *big=malloc(256);
    int c; long n=0,t=255;
    printf("Enter something very long: ");
    while ((c=getchar())!=EOF) {
        if (n>=t) {
            big=realloc(big,t+256);
            t+=256;
        }
        big[n]=c; ++n;
    }
    big[n]='\0';
    puts(big); // using puts as it's faster than printf
    // or printf("%s",big);
    free(big);
    return 0;
}

这对我有用。