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

标签 c++ string dev-c++ strchr

我希望通过我输入的内容创建的角色找到它,所以这里是代码,但它总是在“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. strchr 接受一个 char * 作为第一个参数,一个 char 作为第二个参数,你给了一个 char * 。这是手册 http://man7.org/linux/man-pages/man3/strchr.3.html
  2. 您应该在 gets 之后调用函数 strchr 来初始化 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;
    }

关于c++ - 在 dev c++ 中使用 strchr(),从 'char' 到 'int' 的无效转换 [-fpermissive],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58290275/

相关文章:

c++ - 在 vector C++ 中排列奇数和偶数

c++ - 传递一个带有N个参数的模板,作为模板参数,用N-1个参数指定

string - 有没有一种简单的方法可以在 Rust 中生成小写和大写英文字母表?

c - 系统资源不足,无法完成请求的服务

c - 如何使用Matlab生成的C代码?

c++ - armcc中.arm.extab条目的结构是什么?

c++将给定.dat文件中的字符串 vector 转换为 double vector

十进制转二进制的C程序

java - 如何编写一个程序来计算其中至少有 2 个元音的单词数?

windows - 在 Dev-C++ 中编译 Windows 程序会出错