Проблема со строкой C Ввод целого числа N и строки, я хочу распечатать символ на N-й позиции. (Если N> strlen (str)) - PullRequest
0 голосов
/ 22 января 2019
int N;
char str[64];
/*Entering integer N from interval [1,20]*/
do
{
    scanf("%d", &N);
}while(N<1 || N>20);

/*Entering string.*/    

fflush(stdin);
gets(str);

if(N<strlen(str))
{
    printf("%c", str[N-1]);
}

else if(N>strlen(str))
{
   /*missing code*/
}

return 0;

Так что в этом случае, когда программа N> strlen (str) должна просто считать символы от начала.Например, если N равно 5, а строка «abc», программа должна считать «abcab» и печатать «b» в конце, так как символ находится на N-й (в данном случае 5-й) позиции.

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

Ответы [ 2 ]

0 голосов
/ 22 января 2019
/*missing code:*/ difference=N%strlen(str);

    if(difference==0)
    {
        printf("%c", str[difference]);
    }

    else printf("%c", str[difference-1]);

В основном это должно работать сейчас.

0 голосов
/ 22 января 2019

Хорошо, я постараюсь объяснить это! если у вас есть N и L (скажем, длина строки). Тогда позиция персонажа на N-м месте будет рассчитываться по формуле лайк: N = (N% L) -1; (вычитаемое из-за массива начинается с 0) Эта формула работает так: Предположим, что у меня есть строка «avlgh» и мой N = 6, тогда после подсчета до 5 будет остаток, который будет индексом персонажа в позиции, которую вы ищете.

Надеюсь, это поможет, а если нет, то лучше объяснят вам это

...