回 帖 发 新 帖 刷新版面

主题:求教这段代码哪里错了

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



我用DEV编译后运行出现内存不可读取错误,检查了几遍不的要领,麻烦各位大大帮我看看,指点迷津,谢谢了。[code=c]
#include <stdio.h>
#include <stdlib.h>

char *sou (char * pr,char ch);

int main(int argc, char *argv[])
{
  char ch;
  char ar[80] = "wan zheng xing shu ru shi shen me shu ru?";
  char * pt;
  
  printf ("shu ru ni yao cha zhao de zi fu: \n");
  while ((ch = getchar ()) != 'q')
  {      
        while (getchar () != '\n')
              continue;
        pt = sou (ar,ch);
        
  if (pt)
      printf ("bu baohan %s.",ch);
  else
      puts (pt);
  puts ("zai shu ru yi ge zifu.");
  
  }
  puts ("Bye!");
  system("PAUSE");    
  return 0;
}

char *sou (char * pr,char ch)
{
  char *p_save = pr;
 
  if(*pr == '\0') return NULL;
  while(1)
  {
     if(*pr == ch)
      {
         return p_save;
      }
     else
       {
         if(*++pr == '\0') return NULL;
         p_save = pr;
       }
   }
          
}           

[/code]

回复列表 (共2个回复)

沙发

不讨论函数设计问题。
printf ("bu baohan %s.",ch);->%c

板凳

谢谢你的回复  今天仔细看了一遍, 终于把问题搞懂了 ,


if (pt)
      puts (pt);
  else
      printf ("bu baohan %c.",ch);
这个判断搞反了,呵呵。

我来回复

您尚未登录,请登录后再回复。点此登录或注册