Чтение данных из строки в C (например, scanf) - PullRequest
1 голос
/ 02 февраля 2011

Я прочитал и сохранил файл данных, который я обрабатываю, в массив массивов символов, по одному массиву символов для каждой строки в файле, и теперь я хочу обработать отдельные строки.Однако я не уверен, как это сделать.

Я читаю каждую строку примерно так:

/* Read the whole file into an array */
char read_lines[FILE_LENGTH][FILE_WIDTH];
for(i=0;i<FILE_LENGTH;i++) {
    fscanf(data_file, "%[^\n]", read_lines[i]);
    fscanf(data_file, "%[\n]", dump);
}

Мне нужно прочитать данные в каждой строке, которая отформатирована как% d \t% d \ t% d \ t% d \ t% d, и я не совсем уверен, как считать конкретную переменную в функцию scanf.Я знаю, что fscanf () читает из файла, а scanf () читает из пользовательского ввода, есть ли функция, которая читает из переменной?следующий код:

read_lines = open('file.txt').readlines()
for line in lines:
    i = lines.index(line)
    first[i], second[i], third[i], forth[i], fifth[i] = line.split('\t')

Я действительно не могу понять, как сделать эквивалент в C. Я провел немало исследований, но не смог найти ничего полезного.Любая помощь будет оценена!

Спасибо!

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Возможно, проверьте sscanf . Это как двоюродный брат scanf и fscanf , но вместо этого принимает строку. Вот отрывок из приведенной выше ссылки.

Функция sscanf принимает строку для чтения ввода, затем, аналогично printf и связанным функциям, принимает строку шаблона и серию связанных аргументов . Он пытается сопоставить строку шаблона со строкой, из которой он читает ввод, используя спецификатор преобразования, такой как у printf.

0 голосов
/ 02 февраля 2011

Вы можете использовать функцию strtok [прочитать страницу руководства], чтобы разбить строку

например, http://www.gnu.org/s/libc/manual/html_node/Finding-Tokens-in-a-String.html

...