C字符串问题。输入整数 N 和字符串,我想在第 N 个位置打印出字符。 (如果 N>strlen(str))

C string problem. Entering integer N and string, I want to print out character on Nth position. (If N>strlen(str))

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 个)位置。

如果有人可以帮助我解决缺少的代码,我将不胜感激。

好的,我会尽力解释的! 如果你有 N 和 L(比如说字符串的长度)。 那么第N个字符的位置会通过一个公式计算出来 像: N = (N%L)-1; (减一是因为数组是0开头的) 这个公式是这样工作的: 假设我有字符串"avlgh",我的N=6,那么在数到5之后会有一个余数,就是你要查找的字符所在位置的索引。

我希望这对您有所帮助,如果没有,其他人会更好地向您解释这一点

/*missing code:*/ difference=N%strlen(str);

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

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

基本上现在应该可以了。