编写程序以查找和替换单词

时间:2017-08-06 09:21:48

标签: c string pointers

计划问题是: 编写一个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 这个词是

它提供空白输出

有人,请帮我这个代码。

2 个答案:

答案 0 :(得分:0)

由于a的类型为char*a[i]chark也是char,因此你可以简单地将它们比作:

if(a[i] == k)

此外,你的scnaf'使用换行符,丢弃它。改变这个:

scanf("%c\n",&b);

到此:

scanf(" %c",&b);

你应该注意到我在%c之前留了一个空格,以便吃掉一个待定字符(我有一个例子here)。

答案 1 :(得分:0)

  1. 如果您测试功能,最好创建一些测试用例并避免用户输入。当您确定您的功能有效时,可以稍后添加。

  2. 示例(我不知道你的例子中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;
    }