| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:判断字符是否在字符串中
只看楼主 加入收藏
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
判断字符是否在字符串中
程序代码:
/**++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  *编程练习11-4,编写一个函数,在第一个参数指定的字符串中搜索第二个参数指定的
  *字符第一次出现的位置;如果找到则返回位置指针,如果没有则返回空字符串
  **/
#include <stdio.h>
#include <string.h>

char *search_string(const char *string, const char search);

int main(void)
{
    char string[80], ch;

    printf("Please input the string:");
    scanf("%s", string);
    printf("Please input you want to search:");
    scanf("%c", ch);
    printf("%p\n", search_string(string, ch));

    return 0;
}

char *search_string(const char *string, const char search)
{
    return strchr(string, search);
}
编译没有错误出现,但是运行被意外停止。
请教,哪里出错了?应该如何改动?
谢谢。

有意思的是,在运行可执行文件的时候,文件就被杀毒软件给干掉了,说是木马病毒,添加信任之后运行就被意外终止。


[ 本帖最后由 gleerat 于 2013-1-30 10:56 编辑 ]
搜索更多相关主题的帖子: 字符串 color 
2013-01-29 23:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
scanf("%c", ch);

btw: 你做的跟题目要求的好像是两回事。

授人以渔,不授人以鱼。
2013-01-29 23:16
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
收藏
得分:0 
回复 2楼 TonyDeng
题头注释中手误,应该是查找字符而非字符串。

明察、慎思、笃行
2013-01-30 10:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
回复 3楼 gleerat
你回复了 TonyDeng BTW 的问题,但主角 scanf("%c", ch); 你没看一下呀?
这算是买椟还珠吧:)
2013-01-30 10:59
killerlzt
Rank: 2
等 级:论坛游民
帖 子:11
专家分:67
注 册:2012-4-27
收藏
得分:10 
#include <stdio.h>
#include <string.h>

char *search_string(const char *string, const char search);

int main(void)
{
    char string[80], ch;
    printf("Please input the string:");
    scanf("%s", string);
    printf("Please input you want to search:");
    getchar();   //添加一个getchar()函数,去掉缓冲区里的换行符
    scanf("%c",&ch); //字符输入时要加&
    printf("%p\n", search_string(string, ch));
    return 0;
}

char *search_string(const char *string, const char search)
{
    return strchr(string, search);
}

因为scanf()是从输入流缓冲区中读取值的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(\n)而结束的,这个\n会一起读入输入流缓冲区的,所以第一次接受输入时取走字符后会留下字符\n,这样第二次的读入函数直接从缓冲区中把\n取走了
2013-01-30 14:38
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
收藏
得分:0 
回复 4楼 rjsp
关于scanf的问题还请说明白点。
谢谢。

明察、慎思、笃行
2013-01-30 14:40
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
楼主学两个月了吧?这么基本的问题,犯错了,特意摘一句出来,应该马上就有意识的,还要明白指点?回头看看书吧。实在不知道,看看5楼的解释。不过你这样学习,都不知道怎么说你好。

授人以渔,不授人以鱼。
2013-01-30 14:59
killerlzt
Rank: 2
等 级:论坛游民
帖 子:11
专家分:67
注 册:2012-4-27
收藏
得分:0 
可以参考资料
http://
2013-01-30 15:26
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
收藏
得分:0 
回复 7楼 TonyDeng
近来工作有点忙,有一个月没有接触C语言的练习了。
谢谢你的指正,正在温习之前学习的内容。

明察、慎思、笃行
2013-01-31 23:36
gleerat
Rank: 2
等 级:论坛游民
帖 子:39
专家分:20
注 册:2009-12-23
收藏
得分:0 
回复 5楼 killerlzt
谢谢指点,缓冲区的换行符确实没有意识到。
你给的参考资料也很有用。

明察、慎思、笃行
2013-02-01 00:01
快速回复:判断字符是否在字符串中
数据加载中...
 
   



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

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