| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4357 人关注过本帖
标题:[求助]怎样实现在字符串里查找任意输入的字符?
取消只看楼主 加入收藏
imlhk
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-8-21
收藏
 问题点数:0 回复次数:5 
[求助]怎样实现在字符串里查找任意输入的字符?

做C语言练习题时遇到的问题,哪位有闲的大虾帮忙解答一下。
题目1:任意输入1组英文字符串,然后任意输入1个字母,查找该字母在最初输入的英文字符串中的个数。
题目2:任意输入1组英文字符串,指定其中1个字符,将所有同样的字符从字符串中删除。
以下是我对题目1的解答

#include <stdio.h>
#include <string.h>
int main(void)
{
char str; /* 被输入的任意英文字符串 */
int a; /* 英文字符串的文字数 */
int i; /* 反复查找的次数 */
char x; /* 想要查找并计数的字符 */
int n=0; /* 查找到的字符的数量 */
printf("Hellow,请输入任意英文字符串\n");
scanf("%s",str); /* 输入任意英文字符串str */
a=strlen(str); /* 计算出英文字符串的长度(即文字数) */
printf("输入想要查找的字符\n");
scanf("%c",x); /* 输入想要查找并计数的字符x */
for (i=0; i<a; i++) { /* 设置以字符数a为总查找回数的变数i */
if x==str(i) /* 将想要查找并计数的字符x与第i回查找结果进行对照比较 */
n=n+1; } /* 如果找到相同字符的话计数器n增加1 */
printf("被查找的字符%c共找到%d个。\n",x,n);
else
printf("没有找到被输入的字符。\n");
return 0;
}

组建时失败了,if x==str(i)这行没通过,似乎单个字符不能跟字符串里的任意字符进行比较;else的位置也不对,搞不明白哪里不对。请求高手修正一下。拜谢。

题目2里的删除功能是通过把指定字符替换成什么来实现的?

搜索更多相关主题的帖子: 字符 输入 
2007-08-21 13:11
imlhk
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-8-21
收藏
得分:0 
多谢赐教。把str定义成数组,并且把else改成 if(n == 0)后
组建编译是通过了,可是实际运行程序时在进行到
scanf("%c",x); /* 输入想要查找并计数的字符x */
时程序自动结束了,不知这部分该怎样纠正?

2007-08-21 13:58
imlhk
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-8-21
收藏
得分:0 

修正以后的程序如下所示,运行到1半就会自动终止,没能解决“查找字符并计数”的关键步骤,不知原因何在,学了不到1星期的小菜鸟我现在束手无策。
[CODE]#include <stdio.h>
#include <string.h>
int main(void)
{
char str[25]; /* 被输入的任意英文字符串 */
int a; /* 英文字符串的文字数 */
int i; /* 反复查找的次数 */
char x; /* 想要查找并计数的字符 */
int n=0; /* 查找到的字符的数量,初始化为0 */
printf("Hellow,请输入任意英文字符串\n");
scanf("%s",str); /* 输入任意英文字符串str */
a=strlen(str); /* 计算出英文字符串的长度(即文字数) */
printf("输入了%d个字符\n",a);
printf("输入想要查找的字符\n");
scanf("%c",x); /* 输入想要查找并计数的字符x */
for (i=0; i<a; i++) { /* 设置以字符数a为总查找回数的变数i */
if (x==str[i]) /* 将想要查找并计数的字符x与第i回查找结果进行对照比较 */
n=n+1; } /* 如果找到相同字符的话计数器n增加1 */
printf("被查找的字符%c共找到%d个。\n",x,n);
if(n == 0)
printf("没有找到被输入的字符。\n");
return 0;
}[/CODE]

[此贴子已经被作者于2007-8-21 16:51:15编辑过]


2007-08-21 16:48
imlhk
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-8-21
收藏
得分:0 
fflush(stdin)这个函数我还尚未学习,看不懂意思;各位太厉害了,真想不到这道题有这么多解决方法。多谢各位大侠相助。

2007-08-22 10:27
imlhk
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-8-21
收藏
得分:0 
回复:(我是菜鸟哦)#include #inclu...
试了以后发现了问题:最后的倒数第2行“getch();”通不过,只能改回成“return 0;”,这样虽然通过了,但是执行结果会出现虚报的现象,比如输入的字符数量在3个以下的情况,程序会把相同的2个字符判断成为只有1个;只输入1个字符的时候会被判断成0个。不清楚这是不是由于使用了“getchar()”的原因?

2007-08-22 11:12
imlhk
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-8-21
收藏
得分:0 
回复:(jingjingyls)楼主可以利用strchr(在一个串中...

由于没有接触过实例,strchr函数我还不会使用。不过仍然感谢你的提示。
经过其他高人的指点,我终于知道了在这题最初输入字符串时应该改正为
gets(str);/* 输入任意英文字符串str */
而采用 scanf("%s",str); 在最后是会出现虚报数量的问题的。
虽然还是不明白原理,但正确的方法应该
改正为 gets(str);


2007-08-22 18:30
快速回复:[求助]怎样实现在字符串里查找任意输入的字符?
数据加载中...
 
   



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

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