Как мне принять только числовые значения из файла в C? - PullRequest
0 голосов
/ 21 августа 2011

Я взялся за проект, и мне нужна помощь.По сути, это программа для проверки, подключены ли какие-либо контакты к плате.(Ну, это упрощенная версия. Все дело в схеме с микроконтроллером.)

Проблема в том, что, когда контакт подключен, я получаю числовое значение, а когда он не подключен, я не получаюзначение, как это пустое в моей таблице.

Как я могу принять эти значения?

Мне нужно принять даже пробел, чтобы знать, что он не подключен, плюс таблица содержит некоторыедругие нечисловые значения.Я попытался прочитать файл, используя функцию fscanf(), но это не совсем сработало.Мне известны только функции fscanf(), fread(), fgets() и fgetc() для чтения из различных типов файлов.

Кроме того, возможно ли читать данные из файла Excel с помощью C?

Пример таблицы:

FROM          TO
1             39
2   

Здесь цифры 1 и 2 находятся под столбцом FROM и указывают, к какому выводу подключен первый конец разъема.,Числа в поле TO указывают нам, к какому контакту подключен другой конец разъема, а когда столбец пуст, он не подключен на одном конце.

Теперь я пытаюсь создать программучтобы создать программу на языке ассемблера для микроконтроллера, поэтому мне нужно иметь возможность прочитать, подключен ли разъем, и если это так, то к какому выводу?И соответственно мне нужно выполнить некоторые операции.(С этим я могу справиться самостоятельно).

Сложность, с которой я сталкиваюсь, - это чтение из определенной строки и чтение пробела.

Ответы [ 4 ]

1 голос
/ 21 августа 2011

Считайте строки, используя fgets() или родственника. Затем используйте sscanf() в строке, проверяя, были ли одно или два успешных преобразования (возвращаемое значение). Если есть одно преобразование, второе значение было пустым или отсутствующим; если два, то у вас есть оба числа безопасно.

Обратите внимание, что fscanf() и родственники будут читать последние строки, если вы не будете осторожны, поэтому они не предоставляют нужную вам информацию.

0 голосов
/ 11 ноября 2015

Поскольку в строке есть два значения, вы можете проанализировать первое, найти следующий пробел, а затем проанализировать следующее в поисках его отсутствия. Я говорю parse, а не scanf (), потому что, когда мне действительно нужен контроль или у меня есть огромное количество чисел для сканирования, я использую вызовы из семейства strtol ()

0 голосов
/ 21 августа 2011

Это распространенная проблема в C. Когда границы строк несут смысл в грамматике, трудно напрямую прочитать файл, используя только scanf () -семейные функции.

Просто прочитайте каждую строку с помощью fgets(3) и затем запустите sscanf() по одной строке за раз. Делая это, вы не будете неправильно прыгать вперед, чтобы прочитать первый столбец следующей строки.

0 голосов
/ 21 августа 2011

так что ваш файл больше похож на это

Col1  col2 \n
r1val1  r1val2\n 
.
.

и т. Д., Если это так, используйте fscanf () для чтения строки (до \ n) из файла. Затем используйте функцию strtok (), чтобы разбить строку на токены, здесь приведено руководство по тому же

http://www.gnu.org/s/hello/manual/libc/Finding-Tokens-in-a-String.html

надеюсь, это поможет ... еще одно скромное предложение: сначала поработайте над программированием на c, если вы новичок, не стоит напрямую обращаться к микроконтроллерам, поскольку есть много вещей, которые вы можете неправильно понять, если не знаете некоторых основных понятий. ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...