Так что это как текст в файле выглядит следующим образом:как сканировать текстовый файл с помощью fscanf с помощью разделителей?
locked y
locked n
position 90
position 2
audio-language "english"
audio-language "spanish"
каждый текстовый файл содержит только один вид настроек, показанных выше, разница вариант (у или п, 1 до 999, «английский «« испанский »« все остальное ») у него есть 4 белых пространства впереди и новая строка в конце каждой строки, поэтому мне нужен fscanf, который будет извлекать параметр в строке массива символов, но я не могу понять, как для правильного использования разделителей. Я должен сделать программу, которая может сканировать этот файл и распечатать различные настройки и сколько раз они встречаются в файле, например:
audio-language is found with setting: "spanish" 40 times
audio-language is found with setting: "english" 78 times
всех вас за ваши ответы! Здесь я могу показать вам, как я сделал это работа:
1 - Во-первых, когда вы используете несильно (который я нашел в Интернете), что устраняет пробелы перед настройками:
char* ltrim(char* s)
{
char* newstart = s;
while (isspace(*newstart)) {
++newstart;
}
// newstart points to first non-whitespace char (which might be '\0')
memmove(s, newstart, strlen(newstart) + 1); // don't forget to move the '\0' terminator
return s;
}
2 - Тогда fscanf не имеет проблем с получением права строки:
while(!feof(fpoo)) {
fscanf(fpoo,"%s %[^\n]",&first, &sec);
3 - Тогда вы сравнить те fscanf получили с теми, пользователь ввел
Вот и все, видимо, вся проблема с fscanf была из-за белых пробелов перед каждой строкой.
Пожалуйста ** ** показать ваши попытки ... –
Я думаю, что она будет решена с помощью 'strtok' – phoxis
Для решения C, я рекомендую использовать [' fgets'] (HTTP://en.cppreference.com/w/c/io/fgets), чтобы получить каждую строку, а затем сделать 'sscanf', чтобы получить ключ и значение. Если значение должно быть числовым, используйте, например, ['strtol'] (http://en.cppreference.com/w/c/string/byte/strtol) после сканирования, чтобы преобразовать его. Используйте «strcmp» на ключе, чтобы узнать, какой именно ключ. –