У меня возникли проблемы с чтением определенного целого из файла, и я не уверен, почему. Сначала я прочитал весь файл, чтобы узнать, насколько он большой, а затем я сброшу указатель на начало. Затем я прочитал 3 16-байтовых блока данных. Затем 1 20-байтовый блок, а затем я хотел бы прочитать 1 байт в конце как целое число. Однако мне пришлось записывать в файл как персонажа, но я не думаю, что это должно быть проблемой. Моя проблема в том, что когда я прочитал ее из файла вместо целочисленного значения 15, это 49. Я проверил в таблице ACII, и это не шестнадцатеричное или восьмеричное значение 1 или 5. Я полностью смущен, потому что мой читать заявление read(inF, pad, 1)
, который, я считаю, прав. Я знаю, что целочисленная переменная составляет 4 байта, но в файле остается только один байт, поэтому я читаю только последний байт.
Мой код воспроизводится функцию (это кажется много, но не думаю, что это)Чтение из текстового файла в C
код
#include<math.h>
#include<stdio.h>
#include<string.h>
#include <fcntl.h>
int main(int argc, char** argv)
{
char x;
int y;
int bytes = 0;
int num = 0;
int count = 0;
num = open ("a_file", O_RDONLY);
bytes = read(num, y, 1);
printf("y %d\n", y);
return 0;
}
Подводя итог мой вопрос, почему, когда я прочитал байт который хранит 15 из текстового файла, я не могу просмотреть его как 15 из целочисленного представления? Любая помощь будет очень оценена. Спасибо!
Я не могу достаточно выяснить, что вы делаете с данными, так что вы, вероятно, должны уменьшить свой код к чему-то более простому, как «читать номер из «файл» и «записать номер в файл» - это намного проще экспериментировать. – che
@che Я изменил код на что-то подобное, но очень простое, у меня все еще есть такая же проблема, хотя у вас есть предложение? – tpar44
Вот ключ: 49 - это десятичное значение символа ASCII '1'. – blueshift