主题:求教这段代码哪里错了
设计并测试一个函数,其功能是搜索由函数的第一个参数指定的字符串,在其中查找由函数的第二个参数指定的字符的第一次出现的位置。如果找到,返回指向这个字符的指针:如果没有找到,返回空字符(这种方式和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]
我用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]