0

我希望由我输入的内容创建的字符找到它所以这里是代码,但它总是在“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;
}
4

1 回答 1

1

您的代码中有多个问题。

  1. strchr 将 achar *作为第一个参数和 achar作为第二个参数,而您给出了 a 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;
    }
于 2019-10-08T16:40:18.990 回答