这是我的程序,它反转了一个字符串。我试图在最后使用函数 strrchr,因为我在标准输入中输入字符串 James Bond
。所以我想看看 strrchr 函数是否给出了一个指向上述字符串的值字符 B
的指针。
#include<stdio.h>
#include<string.h>
int main ()
{
char rt[100];
char temp,*op;
printf("enter a string\n");
scanf("%s",rt);
printf("the string you entered is %s\n",rt);
int i, k, length;
i=0;
k=strlen(rt);
printf("strlen gives =%d\n",k);
length=k;
length--;
for(;i<k/2;i++)
{
temp=rt[i];
rt[i]=rt[length-i];
rt[length-i]=temp;
}
printf("the reverse string is %s\n",rt);
op=strrchr(rt,'B');
printf("strrchr gives %c\n",*op);
}
现在当我跑到上面时我得到
./a.out
enter a string
James Bond
the string you entered is James
strlen gives =5
the reverse string is semaJ
Segmentation fault
这可能是什么原因。上面的 strrchr 用法错了吗?
最佳答案
在使用 *
一元运算符取消引用 op
之前,您必须检查它是否为 NULL
(当字符为未找到):
op = strrchr(rt, 'B');
if (op != NULL)
printf("strrchr gives %c\n", *op);
关于c - 使用 strrchr 函数时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6435847/