informatica工具:请懂c的高手指点我的错误

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 03:14:33
题目是:判断一个字符ch是否与str所指串中的某个字符相同,若相同,什么也不做,若不同,将其插在串后.
#include "stdio.h"
fun(char ch)
{char str[80];
int i=0;int j=0;
while(str[i]!='\0';
i++;
while(str[j++]!=ch)
str[i+1]=ch;
str[i]='\0';
}
main()
{char str[12]="zxcvbnmBB";
printf("input ch:",ch);
fun(ch);
printf("the string is %s",str);
}
这个程序运行总是不行,请问该怎么改啊 ?
printf("input ch:",ch);
fun(ch);
改为
printf("input ch:",ch);
scanf("ch",&ch);
fun(ch);
运行后,若输入不同的字符,这个程序不能在串后添加,请高手指点啊/
我运行了,能运行,但是不能得出正确结果啊

#include "stdio.h"
fun(char *s, char ch)
{
int i=0;
while(s[++i]!=ch&&s[i]!='\0');
if(s[i]=='\0') {
s[i]=ch;
s[++i]='\0';
}
}
main()
{
char ch;
char str[12]="zxcvbnmBB";
printf("input ch:");
scanf("%c", &ch); /*或者用ch=getchar();*/
fun(str, ch);
printf("the string is %s",str);
}

#include <stdio.h>
void compare(char ch,char *str)
/*该函数用来将给定字符与指定字符串中的字符逐一比较,返回类型为void*/
{
int i,j;
i=j=0; /*i,j都指向字符串的开始*/
while(*(str+i)!='\0') i++; /*将i移到字符串尾*/
while(*(str+j)!=ch&&j!=i) j++; /*移动j,while的出口有两个*/
if(*(str+j)==ch) printf("Found %d\n",++j); /*出口1,找到字符,并打印位置*/
if(j==i) {*(str+i)=ch;*(str+(++i))='\0';} /*出口2,没有找到字符,并在字符串尾
(由i指向)插入新字符*/
}

void main(){
char str[]="zxvcbbjlkaj";
char ch;
printf("input ch %c:",ch);
scanf("%c",&ch);
compare(ch,str);/*调用compare,一个参数是输入的字符,一个参数是字符串的首地址*/
printf("The string is %s",str);
}

你程序错误太多了
不知道怎么改哦
你说说你的功能是什么
帮你做一个