换字

问题描述 投票:0回答:1

谁能告诉我这里的错误是什么。我这里用的是二维数组。

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char a[100], b[30][30], c[20], d[20];
        int i, j=0, k, count=0;
        int e[30];
        printf("enter a string: ");
        gets(a);
        printf("enter the word which has to be replaced: ");
        gets(c);
        printf("enter the word with which it has to be replaced: ");
        gets(d);
        for(i=0,k=0, e[i]=0; i<strlen(a); i++, k++)
        {
            if(a[i]==' ')
            {
                k=0;
                j++;
                count++;
            }
            else
            {
                b[j][k]=a[i];
                e[i]++;
            }
        }

        for(i=0; i<j; i++)
        {
            if(word(b[i], c)==0)
            {
                for(k=0; k<strlen(d); k++)
                {
                    b[i][k]=d[k];
                }
            }
        }
        for(i=0; i<count; i++)
        {
            for(j=0; j<e[i]; j++)
            {
                printf("%c", b[i][j]);
            }
            printf(" ");
        }
    }
    int word(char *a, char *c)
    {
        int i;
        if(strlen(a)==strlen(c))
        {
            for(i=0; i<strlen(a); i++)
            {
                if(a[i]!=c[i])
                {
                    return 1;
                }
            }
        }
        else
            return 2;
        return 0;
    }

我希望输出的结果是像下面这样的.比如说,我的意思是我想只替换那个特定的单词,只要在字符串中出现多少次,比如这里,单词good。

    enter a string: vicky is a good boy
    enter the word which has to be replaced: good
    enter the word with which it has to be replaced: bad
    vicky is a bad boy

我的意思是我只想替换那个特定的单词 只要它在字符串中出现的次数多就可以了 比如这里,单词good. 谁能帮我找出错误,或者帮我找到其他方法。

c arrays string multidimensional-array
1个回答
1
投票

你不应该使用 gets,这是很危险的。为什么get函数如此危险,以至于不应该被使用?.

你应该使用 fgets 读来 stdin 而不是。

word 函数,你用 strlen funciton。

if(strlen(a)==strlen(c))

但在主函数中,你把它调用为:

if(word(b[i], c)==0)

b[i] 是字符数组,但你没有添加空字符。\0 在每个词的最后。所以 strlen 不会像你想象的那样工作。

在你的代码中,你把字符串 cd. 你不更新的值 e 阵列.我想。e[i] 应该是。

e[i] = strlen(d);

我觉得你没有用一些标准的函数来处理字符串,比如说,对你的程序非常有用。

strcmp 来比较字符串和字符串。

strstr 找出字符串中的单词。

如果你在google中搜索,你可以有一大堆的代码用于你的情况。

比如说 程序来替换文本中的一个字 由另一个给定的字

另一个。在C语言中替换字符串中的单词

© www.soinside.com 2019 - 2024. All rights reserved.