Использование strchr () в dev c ++, недопустимое преобразование из 'char' в 'int' [- fpermissive] - PullRequest
0 голосов
/ 08 октября 2019

Я хочу, чтобы символ, основанный на том, что я вводил, нашел его, поэтому вот код, но это всегда ошибка в "hasil = strchr (str, karakter);". он говорит "недопустимое преобразование из 'char' в '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 Ответ

1 голос
/ 08 октября 2019

В вашем коде многократная проблема.

  1. strchr принимает char * в качестве первого аргумента и char в качестве второго аргумента, вместо этого вы дали char *. Вот руководство http://man7.org/linux/man-pages/man3/strchr.3.html
  2. Вы должны поставить вызов функции strchr после обоих gets, чтобы инициализировать оба str и karakter
  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;
    }
...