在DEV C++中使用StRcR(),从“char”到“int”的无效转换[fime]

在DEV C++中使用StRcR(),从“char”到“int”的无效转换[fime],c++,string,dev-c++,strchr,C++,String,Dev C++,Strchr,我希望输入的字符能够找到它,代码如下,但在hasil=strchrstr,karakter;中总是错误的;。它表示从“char”到“int”的转换无效[-fppermissive] #include <iostream> #include <stdlib.h> #include <conio.h> #include <string.h> #include <stdio.h> using namespace std; int main(

我希望输入的字符能够找到它,代码如下,但在hasil=strchrstr,karakter;中总是错误的;。它表示从“char”到“int”的转换无效[-fppermissive]

#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
using namespace std;

int main(void){
    char str[100];
    char karakter[50];
    char *hasil;
    hasil=strchr(str,karakter);

    cout<<"Input String : "; gets(str);
    cout<<"Input Karakter : "; gets(karakter);
    printf("\nResult : %s\n",hasil);
    printf("karakter %c founded in index %d",karakter,(hasil-str));
    getch();
    return 0;
}

您的代码中存在多个问题

strchr将char*作为第一个参数,char作为第二个参数,而您将char*作为第二个参数。这是手册 您应该将函数调用strchr放在这两个函数都初始化str和karakter之后 您应该使用fgets而不是get,如果用户输入溢出缓冲区,您的程序将被终止 修改后应该是这样的

    #include <iostream>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
    #include <stdio.h>
    using namespace std;

    int main(void){
        char str[100];
        char karakter;
        char *hasil;

        cout<<"Input String : "; fgets(str, 100, stdin);
        cout<<"Input Karakter : "; fgets(&karakter, 1, stdin);
        hasil = strchr(str,karakter);
        printf("\nResult : %s\n",hasil);
        printf("karakter %c founded in index %d",karakter,(hasil-str));
        getch();
        return 0;
    }

仔细检查函数的工作方式:在获得输入后还需要调用strchr,否则就没有意义了。我认为strstrstrstr、karakter更合适,因为两个输入都是字符串。strhr查找单个字符,与往常一样,在库函数中,int用于该字符。也许您想检查strchrstr中的第一个字符*karakter。如果进一步使用iostream进行输出,那么为什么要反过来调用get进行输入呢?您是否有意混合使用C/C++?可能是输入错误:将字符作为第二个参数。strchr的第二个参数是intYes,但是int将被截断为char进行比较,为了不误导人们,char是描述函数的更好方式谢谢大家,你们救了我