char operators[] = "+-*/^(";
char* input = new char[100];
char* output = new char[100];
char* operadores = new char[100];
char* pch = input;
char* pch2 = input;
cout << "Expresion: " <<endl; cin.getline(input,100);
cout << input <<endl;
pch2 = strpbrk (pch2, operators);
pch = strtok (pch, "+-*/^(");
while (pch != NULL){
strcat (output, pch);
pch = strtok (NULL, "+-*/^(");
strcat (operadores, pch2);
}
cout << "Salida: " << output <<endl;
cout << "Operadores: " << operadores <<endl;
cout << "Entrada: " << input <<endl;
cout << "pch2 = " << pch2 <<endl;
안녕하세요! 내 문제는 함수 strpbrk가 작동하지 않는다는 것입니다, 그것은 NULL을 반환하지 않습니다, 나는 그것을 증명했습니다. 하지만 스택에 넣으려면 char가 필요하고, cout은 pch2가 지적하는 문자를 표시하지 않습니다.strpbrk가 작동하지 않습니다.
당신이 strpbrk'이 작동하지 않는 '것을 증명 한 이후, 나는 당신이 당신의 컴파일러 공급 업체에 버그보고를 제안한다. 그것은 당신이 발견 한 매우 심각한 결함입니다. –
오, 나는 그것이 컴파일러의 잘못이라고 생각하지 않습니다. 분명히 C/C++은 깨진 언어이며 누구도 사용하지 않아야합니다. ; p –
더 심각하게'strpbrk'는 분명히 여기서 문제가되지 않습니다. 문제는 당신이 어떻게 부르는지에 있습니다. 'strpbrk' 사용을 수정하는 해결책을 제공 할 준비가 되셨습니까? 또한 왜 std :: string 대신 C 문자열을 사용하는지 궁금합니다. –