因此,我制作了一个用于从字符串中删除字符的程序,如下所示:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* deleteChar(char* texto,int n,char del,int i,int j)
{
    /*for(i=0,j=0;i<n;i++)
        if(texto[i]!=del)
        {
            texto[j]=texto=i;
            j=+1;
        }
        for(n-i;n-i<n;i--)
            texto[n-i]=NULL;
        return(texto);*/

    if(i!=n)
    {
        if(texto[i]!=del)
        {
            texto[j]=texto[i];
            j+=1;
        }
        i+=1;
        texto=deleteChar(texto,n,del,i,j);
    }
    else
    {
        i=i-j;
        for(n-i;n-i<n;i--)
            texto[n-i]=NULL;
        return(texto);
    }
}

void main()
{
    char del;
    printf("Remover: \n");
    scanf("%c",&del);

    char* texto;
    texto=(char*)calloc(0,sizeof(char));
    printf("Texto: \n");
    scanf("%s",texto);
    int n=0;
    n=strlen(texto);

    /*char del;
    scanf("%c",&del);*/

    texto=deleteChar(texto,n,del,0,0);
    printf("%s ",texto);
}


专注于main(),由于某种原因,如果在获取字符串后我scanf("%c",&del),程序会中断(甚至在获取del输入之前),但是如果在这样做之后,它会发挥很大的作用。
我不知道为什么。

最佳答案

问题是您在行中重新声明了del

char del;
scanf("%c",&del);


因此,只需除去del的第二个减速度。

关于c - 因此,如果我在读取字符串之前使用scanf(“%c”,del),它可以工作,但之后不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50143550/

10-13 06:22