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

做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
noah_shi
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-8-14
收藏
得分:0 
#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);
a=strlen(str);
printf("输入想要查找的字符\n");
scanf("%c",x);
for (i=0; i<a; i++) {
if x==str(i) //if语句要加括号;str(i)我想你的原意应该是str[i],
//那么把str定义成数组或字符串指针!
n=n+1; }
printf("被查找的字符%c共找到%d个。\n",x,n);
else //else跟哪个if 对因啊?上面的if是在for循环体内部的!
//改成 if(n == 0)
printf("没有找到被输入的字符。\n");
return 0;
}

[此贴子已经被作者于2007-8-21 13:29:22编辑过]


2007-08-21 13:27
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
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:0 
#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 */
getchar();
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");
getch();
}
1,清空缓冲留
2,输入地址

偶是菜鸟鸟偶惧WHO?!!!!
2007-08-21 18:38
chychww
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-8-21
收藏
得分:0 
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[50]; /* 被输入的任意英文字符串 */
int a; /* 英文字符串的文字数 */
int i; /* 反复查找的次数 */
char x; /* 想要查找并计数的字符 */
int n=0; /* 查找到的字符的数量 */
printf("Hellow,请输入任意英文字符串\n");
fflush(stdin);
gets(str);/* 输入任意英文字符串str */
a=strlen(str);/* 计算出英文字符串的长度(即文字数) */
printf("输入想要查找的字符\n");
fflush(stdin);
scanf("%c",&x); /* 输入想要查找并计数的字符x */
for (i=0; i<a; i++) /* 设置以字符数a为总查找回数的变数i */
{
if (str[i]==x)/* 将想要查找并计数的字符x与第i回查找结果进行对照比较 */
{
n++; /* 如果找到相同字符的话计数器n增加1 */
}
}
if(n>0)
{
printf("被查找的字符%c共找到%d个。\n",x,n);
}
else
{
printf("没有找到被输入的字符。\n");
}
return 0;
}
2007-08-21 19:13
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
````LZ``在scanf里``第一个引号后`加个空格``可以解除键盘缓冲``和LS加的getchar();一样``

拿你举李``scanf("%s",str);改为scanf("空格%s",str);``就可以不加getchar();了``


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-08-21 19:22
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
jingjingyls
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-8-12
收藏
得分:0 
楼主可以利用strchr(在一个串中查找给定字符的第一个匹配之处)这个函数,查找到一个后再从当前指针指向的字符串再查找!如果是要查找一个子串的次数可以用strstr函数!程序就省了,应该不难了吧!

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



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

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