@Vadim1899

Вывод char из массива?

В первом цикле for происходит обработка введенного слова.
По втором цикле for нужно вывести строки, которые были получены в 1 цикле for

Как вывести слова во втором цикле?
Например, если добавить printf("%s", word), то слово выведется.
А если в этом же цикле присвоить count[i] = word (где i итерации), а затем во втором цикле вывести это (printf("%s", count[i]), то выводить будет только последнее значение все i-раз. Никак не могу понять в чем проблема, подскажите пожалуйста

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>

int main() {

	char word1[32];
	int i = 0, t = 0;
	char *text[10000];

	for(t = 0; t < 5; t++){

		scanf_s("%s", word1, 32);
		
		// Проводим некоторые операции со строкой //
		

		text[t] = word1; // Пытаемся ее сохранить в массив
	}

	for (t = 0; t < N; t++) {
		printf("\n %d. %s \n", t, text[t]); // Пытаемся вывести
	}


	_getch();

}
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
text[t] = word1; // Пытаемся ее сохранить в массив
выводить будет только последнее значение все i-раз. Никак не могу понять в чем проблема, подскажите пожалуйста

Так ведь это присваивание не строку сохраняет, а указатель на один и тот же буфер word1, который переписывается новой строкой в каждой итерации первого цикла. Если хочется сохранить строку -- надо копировать. Например так:
for(t = 0; t < 5; t++){

    scanf_s("%s", word1, 32);
    
    // Проводим некоторые операции со строкой //
    

    text[t] = strdup(word1); // Пытаемся ее сохранить в массив предварительно попытавшись скопировать
  }

  for (t = 0; t < N; t++) {
    printf("\n %d. %s \n", t, text[t]); // Пытаемся вывести
    free(text[t]); // Пытаемся освободить
  }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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