Вывести массив перевернутых строк в C - PullRequest
0 голосов
/ 23 февраля 2020

Я хочу, чтобы этот код печатал каждое слово в обратном направлении, но не печатает последнее слово, я думаю, что я упускаю что-то очень базовое c здесь.

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

int main()
{
    int l;
    printf("lenght: ");
    scanf("%i",&l);
    char str[l][100];
    int lenght[l];

    for(int i=0; i<l; i++)
    {
        printf("%i : ",i);
        scanf("%s",str[i]);
        lenght[i] = strlen(str[i]);
    }

    for(int i=l-1; i>0; i--)
    {
        for(int j=lenght[i-1]; j>=0; j--)
        {
            printf("%c",str[i][j]);
        }
        printf("\n");
    }



   return 0; 
}     

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

i > 0 и lenght[i - 1] вызывают проблему. Также рассмотрите возможность использования putchar для печати одного char и size_t для представления размера строки:

for (size_t i = l; i--;) {
  for (size_t j = lenght[i]; j--;) {
    putchar(str[i][j]);
  }
  putchar('\n');
}
1 голос
/ 23 февраля 2020

Это проблема for(int i=l-1; i>0; i--). В настоящее время строка индекса 0 никогда не обрабатывается. Задайте условие i >= 0, чтобы включить также 0.

Внутреннюю инициализацию l oop также необходимо изменить на j = lenght[i] - 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...