计划问题是: 编写一个C程序来查找和替换单词中的字符。 这里标志('A'/'F')表示是否必须替换所有事件或只需要替换第一个事件。
我写了这段代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void cond(char *a,int n,char k,char l,char m)
{
printf("The word is\n");
int i,count=0,max=0;
switch(m)
{
case 'A':
for(i=0;i<n;i++)
{
if(a[i]==k)
{
a[i]=l;
count++;
}
}
if(count==0)
{
printf("No such character present in the word.");
}
else
for(i=0;i<n;i++)
{
printf("%c",a[i]);
}
break;
case 'F':
for(i=0;i<n;i++)
{
while(max<1)
{
if(a[i]==k)
{
a[i]=l;
max++;
}
}
}
if(max==0)
{
printf("No such character present in the word.");
}
else
for(i=0;i<n;i++)
{
printf("%c",a[i]);
}
break;
}
}
int main()
{
char a[20],b,e,p;
printf("Enter the word:\n");
scanf("%s",a);
printf("Enter the character to be find:\n");
scanf("%c\n",&b);
printf("Enter the character to be replaced:\n");
scanf("%c\n",&e);
printf("Enter the 'A'/'F':\n");
scanf("%c\n",&p);
int n=strlen(a);
cond(a,n,b,e,p);
return 0;
}
它不提供任何输出
例如: 如果我输入这个 输入单词:airplane 输入要查找的字符:a 输入要替换的字符:z 输入'A'/'F':A 这个词是
它提供空白输出
有人,请帮我这个代码。答案 0 :(得分:0)
由于a
的类型为char*
,a[i]
为char
。 k
也是char
,因此你可以简单地将它们比作:
if(a[i] == k)
此外,你的scnaf'使用换行符,丢弃它。改变这个:
scanf("%c\n",&b);
到此:
scanf(" %c",&b);
你应该注意到我在%c
之前留了一个空格,以便吃掉一个待定字符(我有一个例子here)。
答案 1 :(得分:0)
如果您测试功能,最好创建一些测试用例并避免用户输入。当您确定您的功能有效时,可以稍后添加。
示例(我不知道你的例子中n
意味着什么,因为你甚至没有在你的主要声明它:)
int s_replace(char *haystack, char needle, char replace, char flag) // a/A only first - any other complete
{
int result = 0;
if (haystack == NULL) result = -1;
if (!result)
{
while (*haystack)
{
if (*haystack == needle)
{
*haystack = replace;
if (!(result++) && tolower(flag) == 'a')
{
break;
}
}
haystack++;
}
}
return result;
}
int main()
{
int result;
char test[] = "Program question is: Write a C program to find and replace the character in the word. Here flag('A'/'F') indicates whether all occurrences has to be replaced or only the first occurrence has to be replaced.";
printf("Original string = \"%s\"\n", test);
result = s_replace(test, 'a', 'z', 'A');
switch (result)
{
case -1:
printf("Error !!!!!\n");
break;
case 0:
printf("Nothing was found. \n");
break;
default:
printf("Amended string = \"%s\"\n", test);
printf("Number of changes - %d\n", result);
}
return 0;
}