его не самый чистый, но так я сделал это для проекта. В основном, вместо того, чтобы иметь место в форматированной строке, она занимает до двух пробелов (вы можете изменить ее, чтобы иметь дело с вкладками или что-то еще). Если есть только одно пространство, то второй символ по-прежнему равен нулю, а если его значение не равно нулю, оно будет перезаписано.
Так я хотел бы изменить:
sscanf(text, "%s %s", name, company);
к:
char space[2] = "\0\0"
sscanf(text, "%s%2[ ]%s", name, space, company);
if(space[1] != '\0') {
//there was an extra space, handle it however
}
Можете ли вы уточнить ваш вопрос? Он анализирует X, но также анализирует X? Можете ли вы привести более конкретный пример? – Vicky
Трудно понять, что вы просите, так как ваши два примера строки синтаксиса одинаковы. Приведите пример того, что не работает. –
Я просто хочу разобрать 'ian mceknis blablabla' 'ian mceknis'. Но когда строка содержит больше места, синтаксический анализ будет по-прежнему действителен. Но я не хочу этого. Он должен анализировать только и только «ian mceknis» с указанными пробелами. 'ian mceknis blablabla' не может быть действительным. Надеюсь, вы поняли, что я пытаюсь сказать. Сожалею. – jamall55