| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1048 人关注过本帖
标题:这个程序看不懂 求高手解答
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:8 
如果整個串不存在需要找到的串呢?上面的代碼都有考慮這個問題嗎?

授人以渔,不授人以鱼。
2015-08-15 19:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
/*
題目:求出s所指字符串中最后一次出现的t所指字符串的地址 并用过函数值的返回, 在主函数中
      输出从此地址开始的字符串就是  如果输入s=abc123ab12345ab67890    t=ab
      那么 输出就是67890
*/

#include <stdio.h>
#include <string.h>
#include <conio.h>

int main(void)
{
    const char* s = "abc123ab12345ab67890";
    const char* t = "ab";
    const size_t len = strlen(t);
    const char* p = s;
    const char* q = NULL;

    while ((p = strstr(p, t)) != NULL)
    {
        q = p;
        p += len;
    }
    if (q != NULL)
    {
        puts(q + len);
    }

    puts("\nPress any key to continue...");
    _getch();
    return 0;
}

授人以渔,不授人以鱼。
2015-08-15 19:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果你已經使用了strlen()函數,即已經包含string.h頭,那麼就可以直接使用strstr()函數用於在字符串中查找子字符串。如果不能用string.h頭,則參照前面代碼,寫出自己實現的strlen()和strstr()函數,然後照套可也。

你現在的關鍵,是看明白那程序是怎麼做到的。

授人以渔,不授人以鱼。
2015-08-15 19:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

授人以渔,不授人以鱼。
2015-08-15 20:00
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
這個題目的關鍵之處是搜尋子字符串,不實現出strstr()這樣的函數,妄圖在一整段代碼中完成,必定增加編程複雜性和困難度。學編程,是把複雜問題簡單化,用簡單的手段完成複雜功能,而不是把複雜對複雜當能耐。不拆分函數,用意大利麵條風格完成了這個題目的,絕對不叫高手,祗能算是偏執狂。

授人以渔,不授人以鱼。
2015-08-15 20:21
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
回复 15楼 TonyDeng
T总是在哪查的函数说明都是中文好周到啊

一片落叶掉进了回忆的流年。
2015-08-15 20:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
在vs中按F1就是這些周詳的資訊了,MSDN文檔。

授人以渔,不授人以鱼。
2015-08-15 20:28
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
回复 17楼 TonyDeng
MSDN是英文的啊

一片落叶掉进了回忆的流年。
2015-08-15 20:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用诸葛欧阳在2015-8-15 20:28:34的发言:

MSDN是英文的啊

當然有中文版的。用鼠標指向,會出現中英對比,有些機器翻譯的文檔,文法不通,可以直接看英文。vs的價值在上G的文檔上,有人說幾千大洋不值,叫他們在亞馬遜買全那些文檔看看總共多少錢。

[ 本帖最后由 TonyDeng 于 2015-8-15 20:32 编辑 ]

授人以渔,不授人以鱼。
2015-08-15 20:30
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
1樓的代碼本身就是帶病的,它沒有檢查越界的情況。

授人以渔,不授人以鱼。
2015-08-15 20:45
快速回复:这个程序看不懂 求高手解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054598 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved