在 dev c++ 中使用 strchr(),从 'char' 到 'int'[-fpermissive] 的无效转换

Using strchr() in dev c++, invalid conversion from 'char' to 'int'[-fpermissive]

我想要根据我输入的内容创建的角色来找到它,所以这是代码,但它总是在 "hasil=strchr(str,karakter);" 中出错。它说 "invalid conversion from 'char' to 'int'[-fpermissive]"

#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;
}

您的代码中存在多个问题。

  1. strchr 将 char * 作为第一个参数,将 char 作为第二个参数,而您却给出了 char *。这是手册http://man7.org/linux/man-pages/man3/strchr.3.html
  2. 您应该将函数调用 strchr 放在 gets 之后以初始化 strkarakter
  3. 您应该使用 fgets 而不是 gets,如果用户输入溢出您的缓冲区,您的程序将被终止

修改后应该是这样的

    #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;
    }