Вывод, передача и хранение строк - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д