用户输入并插入数组

时间:2011-10-23 18:54:31

标签: c arrays input for-loop char

我是C的新手。我需要知道如何询问用户输入,这可能是任意数量的单词,然后将字符放入数组中。

我知道这不应该太难回答,但Google只会让我感到困惑。

提前致谢

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你需要的是读取一些未知大小的用户输入,从而将这些信息存储到一个char数组中,对吧?如果是这种情况,一种可能的解决方案是使用一个char数组,应该将其分配给默认的固定大小,这会动态地重新分配它的大小。

一旦循环输入的字符,在验证您没有点击EOF时,您应该将char附加到数组。然后诀窍是检查数组是否足够大以容纳用户输入的字符。如果没有,则必须重新分配数组的大小。

解决方案的示例实现可能看起来像这样:

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

int main()
{
    unsigned int len_max = 128;
    unsigned int current_size = 0;

    char *input = malloc(len_max);
    current_size = len_max;

    printf("\nEnter input:");

    if(input != NULL) {
        int c = EOF;
        unsigned int i = 0;

        // Accept user input until hit EOF.
        while (( c = getchar() ) != EOF) {
            input[i++] = (char)c;

            // If reached maximize size, realloc size.
            if (i == current_size) {
                current_size = i + len_max;
                input = realloc(input, current_size);
            }
        }

        // Terminate the char array.
        input[i] = '\0';

        printf("\nLong String value:%s \n\n",input);

        // Free the char array pointer. 
        free(input);
    }

    return 0;
}

性能方面,我不能确定这可能是最好的解决方案,但我希望这可以帮助您解决问题。

亲切的问候 ~E。

答案 1 :(得分:0)

开始更努力学习...... 一个小帮助:

  1. 打印时使用printf()
  2. 对于用户输入使用scanf()fgets()(第二个更好但更难一点......)