在 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;
}
您的代码中存在多个问题。
- strchr 将
char *
作为第一个参数,将 char
作为第二个参数,而您却给出了 char *
。这是手册http://man7.org/linux/man-pages/man3/strchr.3.html
- 您应该将函数调用
strchr
放在 gets
之后以初始化 str
和 karakter
- 您应该使用
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;
}
我想要根据我输入的内容创建的角色来找到它,所以这是代码,但它总是在 "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;
}
您的代码中存在多个问题。
- strchr 将
char *
作为第一个参数,将char
作为第二个参数,而您却给出了char *
。这是手册http://man7.org/linux/man-pages/man3/strchr.3.html - 您应该将函数调用
strchr
放在gets
之后以初始化str
和karakter
- 您应该使用
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;
}