在DEV C++中使用StRcR(),从“char”到“int”的无效转换[fime]
我希望输入的字符能够找到它,代码如下,但在hasil=strchrstr,karakter;中总是错误的;。它表示从“char”到“int”的转换无效[-fppermissive]在DEV C++中使用StRcR(),从“char”到“int”的无效转换[fime],c++,string,dev-c++,strchr,C++,String,Dev C++,Strchr,我希望输入的字符能够找到它,代码如下,但在hasil=strchrstr,karakter;中总是错误的;。它表示从“char”到“int”的转换无效[-fppermissive] #include <iostream> #include <stdlib.h> #include <conio.h> #include <string.h> #include <stdio.h> using namespace std; int main(
#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*作为第二个参数。这是手册 您应该将函数调用strchr放在这两个函数都初始化str和karakter之后 您应该使用fgets而不是get,如果用户输入溢出缓冲区,您的程序将被终止 修改后应该是这样的
#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;
}
仔细检查函数的工作方式:在获得输入后还需要调用strchr,否则就没有意义了。我认为strstrstrstr、karakter更合适,因为两个输入都是字符串。strhr查找单个字符,与往常一样,在库函数中,int用于该字符。也许您想检查strchrstr中的第一个字符*karakter。如果进一步使用iostream进行输出,那么为什么要反过来调用get进行输入呢?您是否有意混合使用C/C++?可能是输入错误:将字符作为第二个参数。strchr的第二个参数是intYes,但是int将被截断为char进行比较,为了不误导人们,char是描述函数的更好方式谢谢大家,你们救了我