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

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

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

Собственно, вопрос следующий: Необходимо считать строку и изменить её. Проделать это с N строками. Затем вывести результат изменения всех строк. Грубо говоря, мы узнаём у пользователя сколько строк будет вводиться, считываем поочерёдно строки, параллельно изменяя их определённым образом, а затем у меня загвоздка: не знаю, как лучше поступить... Наверное, куда-то и как-то сохранить. Но как создать нужное кол-во массивов типа char с разными именами под изменённые строки - не знаю. Подскажите, пожалуйста. Обрыл весь форум... Прикладываю код.
Листинг программы
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. int main()
  5. {
  6. int ai,a;
  7. char str0[BUFSIZ];
  8. printf("Input number of strings: ");
  9. scanf("%d",&a);
  10. for(ai=0;ai<a;ai++)
  11. {
  12. fflush(stdin);
  13. char str[BUFSIZ]; int size,l;
  14. printf("\n");
  15. gets(str);
  16. fflush(stdin);
  17. size=strlen(str)+1;
  18. int second_words_lenght=0,first_space=0,k;
  19. for(k=0;k<size;k++)
  20. {
  21. if (str[k]==' ')
  22. {
  23. if (first_space==0)
  24. {
  25. first_space=k;
  26. }
  27. else
  28. //определяем длину второго слова (начиная от второго пробела и заканчивая символом после первого пробела(справа налево))
  29. {
  30. if (second_words_lenght==0)
  31. {
  32. second_words_lenght=k-first_space;
  33. }
  34. }
  35. }
  36. }
  37. for (k=0;k<second_words_lenght;k++)
  38. {
  39. char tmp=str[first_space];
  40. for (l=first_space;l<size-2;l++)
  41. {
  42. str[l]=str[l+1];
  43. }
  44. str[size-2]=tmp;
  45. }
  46. int g;
  47. for (g=0;g<=size+1;g++)
  48. {
  49. str0[g]=str[g];
  50. }
  51. puts(str);
  52. }
  53. return(0);
  54. }
Не в той теме разместил. Поздно заметил. Прошу прощения!

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5.  
  6. #define MAX_STR 20 // максимальное количество строк
  7. #define LENGTH 100 // максимальная длина строки
  8.  
  9. int main() {
  10.  
  11.     size_t count; // вводим количество строк
  12.     printf( "Введите количество строк " );
  13.     scanf( "%lu", &count );
  14.  
  15.     // убираем символ новой строки, оставшийся после считывания числа из потока ввода
  16.     while ( getchar() != '\n' )
  17.         ;
  18.  
  19.     // это и есть массив строк, в который будем будем сохранять введённые пользователем строки
  20.     char arrStr[ MAX_STR ][ LENGTH ]; // arrStr[ 0 ] - это первая строка в массиве, arrStr[ 1 ] - вторая и т.д.
  21.  
  22.     size_t i;
  23.     for ( i = 0; i < count; ++i ) { // в цикле
  24.         gets( arrStr[ i ] ); // считываем очередную строку, введённую пользователем
  25.         // меняем сразу же после ввода строку номер i - первый символ строки (с индексом 0 который)
  26.         arrStr[ i ][ 0 ] = toupper( arrStr[ i ][ 0 ] ); // приводим к верхнему регистру
  27.     }
  28.  
  29.     puts( "" );
  30.  
  31.     // выводим изменённые строки
  32.     for ( i = 0; i < count; ++i ) {
  33.         puts( arrStr[ i ] );
  34.     }
  35.  
  36.     return 0;
  37. }

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

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы