标题:strstr()函数问题
只看楼主
XiaoXiao_Ren
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
威 望:1
帖 子:80
专家分:198
注 册:2013-7-17
结帖率:100%
已结贴  问题点数:10 回复次数:4 
strstr()函数问题
不知道下面注释的地方理解是否正确?——请教了


        char match[256], entry[256];
        FILE *titles_fp;
        int count = 0;
        char *found, *title, *catalog;

        mvprintw(10, 0, "Enter a string to search for in CD titles: ");
        get_string(match);  //输入如:myCD1

        titles_fp = fopen(title_file, "r");  //文件中存放形式如: cd11,myCD1,liuxing ,zhoujielun
                                             //                   cd22,myCD2,gudian ,shubote
        if (titles_fp) {
                while (fgets(entry, 256, titles_fp)) {
                        catalog = entry;
                        if (found == strstr(catalog, ",")) {  
//上面是在字符串catalog中查找首次出现的 字符串“,”的位置,并返回该位置的指针
                                *found = '\0';  //这里是将原来存放‘,’的位置改为‘\0’吗?为什么这样做?
                                title = found + 1;  //则此处 title=“myCD1,liuxing ,zhoujielun”吗?

                                if (found == strstr(title, ",")) {
                                        *found = '\0';     
                                        if (found == strstr(title, match)) {
                                                count++;
                                                strcpy(current_cd, title);
                                                strcpy(current_cat, catalog);
                                        }
                                }
                        }
                }
                fclose(titles_fp);
搜索更多相关主题的帖子: zhoujielun search Enter title count 
2013-08-17 00:16
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:8 
if (found == strstr(catalog, ",")) 这什么东西呀
应该是 if( (found=strstr(catalog,",")) != NULL )
当然写成 if (found = strstr(catalog, ",")) 也可以

代码其他地方也很烂,我猜你想找到: 标题(第二字段)中出现指定字符串的标题和目录(第一字段)
2013-08-17 08:41
Rynax
Rank: 1
等 级:新手上路
帖 子:10
专家分:8
注 册:2013-8-8
得分:2 
楼主是想做字符串切割,逗号做分隔符,请使用strtok
2013-08-17 09:17
XiaoXiao_Ren
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
威 望:1
帖 子:80
专家分:198
注 册:2013-7-17
得分:0 
回复 2楼 rjsp
if (found == strstr(catalog, ",")) 这什么东西呀
应该是 if( (found=strstr(catalog,",")) != NULL )
当然写成 if (found = strstr(catalog, ","))  ------这里理解了 , 谢谢了大神。

可以请教一下,当我的char *found 定义之后,found是否已被分配了地址空间,
found无论什么时候都不会等于0,但在if中做判断的时候,为什么每次都可以成立。

if (found == strstr(catalog, ","))使用的 我的程序完全可以正确运行。

否极泰来
2013-08-17 20:45
holy__shit
Rank: 2
等 级:论坛游民
帖 子:21
专家分:55
注 册:2013-8-23
得分:0 
回复 4楼 XiaoXiao_Ren
函数原型:extern char *strstr(char *str1, char *str2);
功能:从字符串str1中查找是否有字符串str2,如果有,从str1中的str2位置起,返回str1中str2起始位置的指针,如果没有,返回null。
返回的是地址怎么会为0(非)呢?

羁绊太多,只会迷失自我!
2013-08-23 21:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-419238-1-1.html




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

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