Захватите данные о символах с получает в C

Я пытаюсь сделать небольшое упражнение, но у меня есть ошибка, которую я не понимаю.

int main(){
int n;
printf("Ingrese el numero de nombres: ");scanf("%i",&n);
char nombres[n];
for (i=0;i<n;i++){
printf("\nIngrese la primera palabra: ");gets(nombres[i]);
}
}

при компиляции первый printf показывает мне дважды. Введите первое слово, и я не понимаю, что я ошибаюсь, или, если его можно использовать, получится так, может кто-нибудь помочь мне узнать мою ошибку?

0
задан 01.12.2019, 00:11
1 ответ

C¦digo очень болен

В C переменные не меняются Ваш tamaño во времени ejecuci¦n asà - что ты не можешь писать char nombres[n]; это, хотя составитель может не доставать тебя, ошибка не будет функционировать ты должен давать ему один tamaño я закрепляю (размещать в número буквального или постоянную величину), если ты хочешь создать это, таким образом, если ты хочешь один tamaño dinÃ: обезьяна tendrÃ: s, что прибегать к указателю костлявая вместо char nombres[n]; было бы char *nombres;, и так как ты подпираешь, мы говорим о том, чтобы хранить текст не можем использовать элементы типа char, так как у этих только есть умение almacener ни один характер, текст хранится в array символов как тот, которого ты старался создавать, и у этого есть один tamaño предел, asà - что линия осталась бы asà - char (*nombres)[256]; для текста mÃ: ximo 255 символов (último место цепи текста в C всегда использует для señalar Ваш конец с carÃ: cter специальный больше этим манипулировали automÃ: ticamente не беспокойся).

В, но если ты создаешь указатель, ты должен распределять ему место в памяти с tamaño, который ты хочешь во времени ejecuci¦n asà - что я участвую в рыцарском турнире después собирания раньше número слов ввода текста, должен писать следующую линию:

nombres = malloc(n * sizeof(char) * 256);         // Se le da a nombres el espacio equivalente a n * TAMAÑO_DEL_TIPO_CHAR * NÚMERO_DE_ELEMENTOS_DEL_ARRAY

también funci¦n gets возражает как parÃ: метр указатель не char и указателя в этом случае один número подобно индексу, который указывает на точку в памяти, где он начинает место текста, который он может использовать, чтобы сохранять цепь asà - что вместо gets(nombres[i]); ты должен использовать gets(&nombres[i]); & он говорит составителю, что вместо того, чтобы перемещать array, если я произошел как parÃ: метр ссылка в памяти (указатель или выражение другой формы индекс в памяти) стоимости, которая в этом случае является элементом array, назови.

В таких языках как язык сценариев JavaScript и PHP это делается из формы automÃ: костариканская, но detrÃ: s сцены работай сходным способом.

В и última сшила: Después заканчивания использовать переменную, которой ты дал ему место с malloc, ты должен вновь освобождать это место с костлявым funci¦n free free(nombres); а эту переменную podr¦, - остаешься занимая место в памяти компьютера без utilisarce. Спокойные

C кажется dif¦-cil, но когда ты изучишь больше ты harÃ: гораздо более легкий.

0
ответ дан 01.12.2019, 10:30

Теги

Похожие вопросы