【发布时间】:2019-08-10 13:32:30
【问题描述】:
编写此代码是为了从后面识别字符串中首先与给定字符匹配的字符位置。当我使用 scanf 获取字符串时,编译器不要求输入字符并直接将输出作为 0 .我无法纠正 scanf 的问题。
我通过直接输入字符串而不使用scanf来运行该函数,它工作正常。
#include<stdio.h>
#include<string.h>
int strrindex(char str[], char t)
{
int n=strlen(str);
while(n>=0)
{
if(str[n]==t)
{
return n;
}
else
{
n=n-1;
}
}
return -1;
}
int main()
{
int k;
char str[100];
printf("enter line\n");
scanf("%s",str);
char t;
printf("enter letter\n");
scanf(" %c",&t);
k=strrindex(str,t);
int p=k+1;
printf("the position is %d",p);
}
代码运行但输出始终为 0 主要是因为 scanf 添加了 \n。
【问题讨论】:
-
删除
return -1;。它会在第一次迭代后导致函数返回。 -
使
n=strlen(str)-1;成为str[strlen(str)]是\0(虽然没有害处)。 -
@PaulOgilvie 实际上 '\0 是字符串的有效字符。至少 strchr 返回指向 '\0' 的指针。
标签: c char character c-strings strrchr