Physicaloser 2017-02-06 15:42 采纳率: 0%
浏览 1244

求教一个简单的C语言题目..

题目是:设计并测试一个函数,其功能是搜索由函数的第一个参数指定的字符串,在其中查找由函数的第二个参数指定的字符的第一次出现的位置。如果找到,返回指向这个字符的指针:如果没有找到,返回空字符(这种方式和 strchr()函数的功能一样)。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。

我的代码
#include
#include
#define QUIT "quit"
#define SIZE 80
//搜索字符在字符串中首次出现的位置
char * str_ch(char * str, char c);

int main(void)
{
char str[SIZE];
char ch;
char * ret_val;

printf("Input a string (type quit to quit):\n");
gets(str);
while (strcmp(str, QUIT))
{
    printf("Input a character: ");
    scanf("%c", &ch);
    while (getchar() != '\n')       //跳过剩余输入部分
        continue;
    ret_val = str_ch(str, ch);
    if (ret_val != NULL)
        printf("Find! The string start with the %c:\n"
        "%s\n", ch, ret_val);
    else
        printf("Can't find!\n");
    printf("Input a string (type quit to quit):\n");
    gets(str);
}
printf("Bye.\n");

return 0;

}

char * str_ch(char * str, char c)
{
int flag = 0;

while (str)
    if (*str++ == c)
    {
        flag = 1;
        break;
    }
if (flag)
    return str - 1;
else
    return NULL;

}

当字符串中有该字符时,输出的结果完全正确,
但是当字符串中没有该字符时,就出现错误。
想了半天还是没看出来。。

  • 写回答

4条回答

  • threenewbee 2017-02-06 15:50
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?