2013-04-13 4 views
0

Недавно я начал изучать C и хотел узнать, существует ли способ объявить некоторые целые числа со значением, заданным пользователем. Например, пользователь вводит в 3. Я хотел бы создать 3 целых числа, например a, b и c. Если пользователь вводит в 5, я хотел бы создать a, b, c, d, e.Создание целого числа по запросу пользователя

Есть ли способ сделать это?

+7

Можете ли вы использовать 'array'? –

+2

Что вы будете делать с целыми числами? * вы не можете делать то, что вы просите, но, возможно, есть простое решение для чего вы в конечном итоге хотите * – pmg

ответ

0

Что вам нужно, это массив целых чисел. Когда вы получили значение «count», вам необходимо динамически выделить массив «count» элементов типа «int».

Для получения более подробной информации, пожалуйста, посмотрите на malloc() функции: http://linux.die.net/man/3/malloc

1

Вы хотите сделать массив, потому что вы не можете объявить неопределенное количество отдельных переменных. Поскольку вы новичок, я дам вам полный ответ, который вы можете скомпилировать его, если вы хотите:

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

int main(){ 
    int* arr,number,i; 
    printf("Give number value: "); 
    scanf("%d",&number); 
    arr = malloc(sizeof(*arr) * number); // after the comment, it safeguards the code 
    for(i=0;i<number;i++){ 
     printf("%d ",i); 
    } 
    return 0; 
} 

обр является переменным указателем и использовать его как массив, который имеет размер Int * числа переменных вы хотите.

+2

'arr = (int *) malloc (sizeof (int) * number);' будет лучше, чем 'arr = malloc (sizeof (* arr) * number); ' –

+0

Ну почему это было бы лучше, так как он хотел, чтобы значения int в массиве? – Edeph

+1

Я не уверен, что понимаю ваш вопрос. Это лучше, потому что A) Вы не набрасываете возвращаемое значение 'malloc' в C. Это совершенно не нужно и может скрыть ошибку на старых компиляторах, которые допускают неявный int. Никакой опытный программист C не возвращает возвращаемое значение 'malloc'. B) вы используете 'sizeof (* some_ptr)' вместо 'sizeof (int)', потому что он немного защищает ваш код. Если тип 'some_ptr' изменится в будущем, вам также не придется изменять часть' sizeof'. Он имеет тот же эффект; компилятор знает тип выражения '* some_ptr'. –

0

Я сделаю это легко для вас.

Что вы можете создать, это массив. Массив - это, по существу, ряд элементов, хранящихся внутри одного имени. Если вы не знаете, как создавать/использовать массивы для вашего примера ... вот пример.

int main (void){ 
int i; //counter 
int totalIntegers 
int arrayVariableName[100]; //array that can store any amount(100 for this case) 
          //of variables inside. 
printf("Enter total amount of variables"); 
    scanf("%d", &totalIntegers); //collect what the user types, pretend you type 5 

for(i=0;i<totalIntegers;i++){ //this will loop 5 times from same example. 
   printf("enter a number: "); 
    scanf("%d",&arrayVariableName[i]); //will store numbers in array 0(which 
             // is holding the integer inside a), 
             // array 1(holding b), array 2(holding c)  
             //array 3(holding d), array 4(holding e). 
    } 

} 

С помощью массива и цикла вы можете установить общую сумму, которая позволит пользователю пробивать цифры много раз. Если, например, вы вводите 7 из 5, вы можете удерживать 7 переменных (a, b, c, d, e, f, g). Если вы планируете создать более 100 целых чисел, измените их внутри объявления массива. Существует способ установить предел на уникальную сумму, которую вы желаете, ответ выше меня показывает вам, как, посмотрите на нее для справки.

Чтобы узнать больше, просто выполните поиск по «массиву tutorial в c».

+1

Он будет лучше использовать динамическое распределение. Если пользователь вводит значение> 100, ваш пример приводит к UB. –

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