Вывод, передача и хранение строк - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Собственно, вопрос следующий: Необходимо считать строку и изменить её. Проделать это с N строками. Затем вывести результат изменения всех строк. Грубо говоря, мы узнаём у пользователя сколько строк будет вводиться, считываем поочерёдно строки, параллельно изменяя их определённым образом, а затем у меня загвоздка: не знаю, как лучше поступить... Наверное, куда-то и как-то сохранить. Но как создать нужное кол-во массивов типа char с разными именами под изменённые строки - не знаю. Подскажите, пожалуйста. Обрыл весь форум... Прикладываю код.
#include<stdio.h>
#include<conio.h>
#include<string.h>
 
int main()
{
   int ai,a;
   char str0[BUFSIZ];
   printf("Input number of strings: ");
   scanf("%d",&a);
   for(ai=0;ai<a;ai++)
   {
    fflush(stdin);
    char str[BUFSIZ]; int size,l;
    printf("\n");
    gets(str);
    fflush(stdin);
    size=strlen(str)+1;
    int second_words_lenght=0,first_space=0,k;
    for(k=0;k<size;k++)
    {
        if (str[k]==' ')
        {
            if (first_space==0)
            {
                first_space=k;
            }
            else
//определяем длину второго слова (начиная от второго пробела и заканчивая символом после первого пробела(справа налево))
            {
                if (second_words_lenght==0)
                {
                    second_words_lenght=k-first_space;
                }
            }
        }
    }
    for (k=0;k<second_words_lenght;k++)
    {
        char tmp=str[first_space];
        for (l=first_space;l<size-2;l++)
        {
            str[l]=str[l+1];
        }
        str[size-2]=tmp;
    }
    int g;
    for (g=0;g<=size+1;g++)
    {
        str0[g]=str[g];
    }
   puts(str);
   }
    return(0);
}
Не в той теме разместил. Поздно заметил. Прошу прощения!

Решение задачи: «Вывод, передача и хранение строк»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
#define MAX_STR 20 // максимальное количество строк
#define LENGTH 100 // максимальная длина строки
 
int main() {
 
    size_t count; // вводим количество строк
    printf( "Введите количество строк " );
    scanf( "%lu", &count );
 
    // убираем символ новой строки, оставшийся после считывания числа из потока ввода
    while ( getchar() != '\n' )
        ;
 
    // это и есть массив строк, в который будем будем сохранять введённые пользователем строки
    char arrStr[ MAX_STR ][ LENGTH ]; // arrStr[ 0 ] - это первая строка в массиве, arrStr[ 1 ] - вторая и т.д.
 
    size_t i;
    for ( i = 0; i < count; ++i ) { // в цикле
        gets( arrStr[ i ] ); // считываем очередную строку, введённую пользователем
        // меняем сразу же после ввода строку номер i - первый символ строки (с индексом 0 который)
        arrStr[ i ][ 0 ] = toupper( arrStr[ i ][ 0 ] ); // приводим к верхнему регистру
    }
 
    puts( "" );
 
    // выводим изменённые строки
    for ( i = 0; i < count; ++i ) {
        puts( arrStr[ i ] );
    }
 
    return 0;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы со строками
  2. Объявление переменных: count (количество строк), arrStr (массив строк)
  3. Ввод количества строк с помощью функции scanf
  4. Удаление символа новой строки из потока ввода с помощью функции getchar
  5. Инициализация массива строк arrStr с помощью цикла for
  6. Считывание строки с помощью функции gets и сохранение ее в массиве arrStr
  7. Приведение первого символа каждой строки к верхнему регистру с помощью функции toupper
  8. Вывод всех строк с помощью цикла for и функции puts

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы