网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月24日漏签0天
c语言吧 关注:799,018贴子:4,359,333
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 6回复贴,共1页
<<返回c语言吧
>0< 加载中...

C编程问题,求大神解答,叩谢

  • 只看楼主
  • 收藏

  • 回复
  • 血魂拖鞋
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
题目:
编写一个函数string_in(),它接受两个字符串指针参数。如果第二个字符串被包含在第一个字符
串中,函数就返回被包含的字符串开始的地址。例如,string_in("hats", "at")返回hats中a的地址,否
则,函数返回空指针。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。
我做的string_int()
char * string_in(char * p1, char * p2)
{
int i =0;
int j;
if(*p2 =='\0')
return NULL;
while(*(p1 +i) !='\0')
{
if(*(p1 +i) ==*p2)
{
for(j =1; *(p2 +j) !=*(p1 +i +j); j++)
continue;
if(*(p2 +j) =='\0')
return (p1+ i);
else
i++;
}
else
i++;
}
return NULL;
}
看到答案的string_in()
char *string_in(char *p1, char *p2)
{
char *p1_save = p1, *p2_save = p2;
if(*p1 == '\0' || *p2 == '\0') return NULL;
while(1)
{
if(*p1 == *p2)
{
if(*++p2 == '\0') return p1_save;
if(*++p1 == '\0') return NULL;
}
else
{
if(*++p1 == '\0') return NULL;
p1_save = p1;
p2 = p2_save;
}
}
}
运行的main()
int main(void)
{
char str1[81];
char str2[81];
char * p;
puts("Input first string:");
gets(str1);
do{
puts("Input find string:");
gets(str2);
p =string_in(str1, str2);
if(p)
{
puts("Find!");
puts(p);
}
else
puts("Can't find!");
puts("Input first string (q to quit):");
gets(str1);
}while(*str1 !='q');
return 0;
}
我写的运行时查找的总是有些问题,想了半天感觉答案所涉及到的条件,和调用都有了可还是没和答案一样。
求大神帮助


  • zx101y
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是我写的,你看下
#include<stdlib.h>
#include<stdio.h>
char *string_in(char *a,char *b)
{
int i,j;
char pan; //用_Bool出了点小问题,所以改用char
for(i=0;a[i]!='\0';i++)
{
if(a[i]==b[0])
{
for(pan=1,j=0;b[j]!='\0';j++)
if(a[i+j]!=b[j]){pan=0;break;}
if(pan==1)return &a[i];
}
}
return NULL;
} int main(void)
{
printf("%#lx\n",string_in("hate","b"));
system("pause");
return 0;
}



2025-08-24 04:01:16
广告
不感兴趣
开通SVIP免广告
  • ho121
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
char *strstr(char *haystack, char *needle);


  • zx101y
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
百度不是从良了么,又吞空格


  • zx101y
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
主函数测试用


  • 血魂拖鞋
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
谢谢大神们~~~


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示