2015-08-09 2 views
-2

Скажите, я хочу получить несколько Integer Inputs от пользователя.Использование массива для неизвестного количества входов в C?

Это может быть 10, 100, 1000 (или) 10000 входов, которые полностью зависят от пользователя.

Я хочу сохранить их в массиве и при необходимости обращаться к любому i-му вводу.

Возможно ли использование массива?

+2

Что сигнализирует об окончании ввода? Я имею в виду, что компьютер не знает, что вход закончился. –

+2

Конечно, это возможно. Просто создайте массив из 10000 элементов. Это соответствует требованиям, указанным в вашем вопросе. Но я полагаю, вы на самом деле пытаетесь спросить что-то еще. Если да, уточните свой вопрос, чтобы более четко описать свои входы (например, как пользователь указывает больше ввода) и любые другие ограничения вашей проблемы. – kaylum

+0

Хорошо, немного более ясно. Скажем, я дам количество входов в начале. И вот, Я хочу объявить массив указанного «нет». входов? Потому что я хочу перейти к любому i-му элементу, я думаю, что Array - это выбор! Я не надеялся, что это возможно с указателями? –

ответ

0

Попробуйте это:

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

int readNum() 
{ 
    int c; 
    int buffer = 0; 
    while ((c = getchar()) != EOF && c != '\n' && c >= '0' && c <= '9') 
    { 
     buffer = (buffer * 10) + (c - '0'); 
    } 
    return buffer; 
} 

int *readNumsToArray() 
{ 
    size_t maxSize = 64; 
    size_t i = 0; 
    int *intArr = malloc(sizeof(*intArr) * maxSize); 
    int buffer; 
    while ((buffer = readNum()) != 0) 
    { 
     intArr[i++] = buffer; 
     if (i == maxSize) 
     { 
      maxSize *= 2; 
      intArr = realloc(intArr, sizeof *intArr * maxSize); 
      if (intArr == NULL) break; 
     } 
    } 
    if (buffer == 0) 
     intArr[i] = buffer; 
    return intArr; 
} 

int main() 
{ 
    int *nums = readNumsToArray(); 
    size_t i = 0; 
    while(nums[i] != 0) 
    { 
     printf("%d\n", nums[i++]); 
    } 
    return 0; 
} 

Эта программа принимает число до 0. Отдельные номера читаются до в «\ п» гольца. Если вы хотите i-й элемент, вы можете просто ввести nums [i].

0

Вы можете использовать функцию malloc. Если вы хотите, чтобы выделить массив динамически, следующий код может быть использован:

int * array = malloc(10 * sizeof(int)); 

Это вычисляет число байт, которые десять целых чисел, занимающие в памяти, а затем прошу много байт из таНоса и присваивают результат к указатель имя array Когда программа больше не нуждается в динамическом массиве, он должен позвонить бесплатно, чтобы вернуть память, занимаемую в свободный магазин:

free(array); 

Источник: Wikipedia

How do i declare an array of undefined or no initial size

Using array for unknown number of inputs in C

+0

Что делать, если я хочу получить значение 7-го элемента в списке? –

+0

@SathyamoorthyR 'array [6]' (6 потому что в C, индексирование массива начинается с 0) –

Смежные вопросы