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]);
基本上现在应该可以了。
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]);
基本上现在应该可以了。