Ich möchte scannen, um Zeichenketten getrennt durch eine /
mit sscanf
zu trennen, aber es funktioniert nicht. Es funktioniert gut mit einem Raum.Wie scannen Sie zwei Strings mit `/` mit Hilfe von sscanf?
Zum Beispiel möchte ich die Zeichenfolge 50%/60% in zwei Strings wie 50% und 60% trennen.
Sie können einen Blick auf Code haben here:
#include <iostream>
using namespace std;
int extract_break_rewrites(int *m, int *n, const char *arg)
{
char m_str[10];
char n_str[10];
int err;
int count = sscanf(arg, "%s %s", n_str, m_str);
printf("%s %s %d\n",n_str, m_str,count);
if (count == 0) {
count = sscanf(arg, "/%s", m_str);
if (count == 0) {
*m = 0;
*n = 0;
return -1;
}
if (sscanf(m_str, "%d%%", m) != 1)
return -1;
}
else if (count == 1) {
if (sscanf(n_str, "%d%%", n) != 1)
return -1;
}
else if (count==2) {
if (sscanf(n_str, "%d%%", n) != 1)
return -1;
if (sscanf(m_str, "%d%%", m) != 1)
return -1;
}
return 1;
}
int main() {
int n,m;
const char * command = "50% 60%";
if (extract_break_rewrites(&m,&n,command)!=-1)
cout<<"Successful. The values of m and n are "<<m<<" and "<<n<<", respectively.\n";
else
cout<<"There was error in processing, may be input was not in the correct format.\n";
return 0;
}
Sie brauchen keine Sorgen zu machen, was der Code tut, sind die wichtigen Linien 10, 11 und Hauptfunktion.
Bitte senden Sie den Code hier statt einen Link zu dem Code. –
Dies wird ein x-y-Problem genannt. Sie wollen eine Zeichenkette analysieren und denken, 'sscanf' ist das richtige Werkzeug. Es ist nicht. – stark
Ihr Code ist in C++ geschrieben, Sie sollten Ihr Tag in C++ ändern. Wenn Sie jedoch Strings parsen wollen, können Sie strtok verwenden, um die Zeichenfolge in Token zu unterteilen. – DMH