Вывод, передача и хранение строк - 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;
- }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы со строками
- Объявление переменных: count (количество строк), arrStr (массив строк)
- Ввод количества строк с помощью функции scanf
- Удаление символа новой строки из потока ввода с помощью функции getchar
- Инициализация массива строк arrStr с помощью цикла for
- Считывание строки с помощью функции gets и сохранение ее в массиве arrStr
- Приведение первого символа каждой строки к верхнему регистру с помощью функции toupper
- Вывод всех строк с помощью цикла for и функции puts
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д