Я хочу сканировать отдельные строки, разделенные /
, используя sscanf
, но это не работает. Он отлично работает с пробелом.
Например, я хочу разделить строку 50%/60% на две строки, например 50% и 60%.
Вы можете посмотреть код здесь:
#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;
}
Вам не нужно беспокоиться о том, что делает код, важные строки — это 10, 11 и основная функция.
sscanf
— подходящий инструмент. Это не так. - person stark   schedule 05.04.2016/
, который обсуждается в вашем вопросе. Это, по крайней мере, слегка сбивает с толку. Что должно произойти, если символы%
отсутствуют? Что должно произойти, если/
отсутствует? - person Jonathan Leffler   schedule 05.04.2016