Здравствуйте, ребята, пожалуйста, помогите мне что-то понять!неверно читайте символ из файла txt
У меня есть txt-файл, и я читаю разные значения. Я делаю это успешно, но у меня тоже есть ASCII, т.е. KS98B2
Я пытаюсь прочитать его и сохранить в значении. Не могли бы вы посмотреть мой код? Слово «KS98B2» должно храниться в переменной «name». Поэтому я объявляю это в основном как символ. Вы согласны? Внутри функции «asc» есть putchar, и он напечатан правильно, я проверил это, я получаю KS98B2.
Но внутри функция по возрастанию Printf дает значение: 84122658 И внутри главного Printf дает значение: 24
Да, я помещал% D в Printf и имя является символом, но как это возможно, что переменная не то же самое? Как я могу заставить его работать? Пожалуйста, помогите мне !
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
FILE *file;
char ch;
int asc(char eow, bool *eof) {
\t int var = 0;
\t
\t while((ch=fgetc(file))!=EOF) {
\t \t putchar(ch);
\t \t
\t \t if ((ch >= 'A') && (ch <= 'Z')) {
\t \t \t var <<= 4;
\t \t \t var += (ch - 'A' + 65);
\t \t }
\t \t else if ((ch >= '0') && (ch <= '9')) {
\t \t \t var <<= 4;
\t \t \t var += (ch - '0');
\t \t } else if (ch == eow) {
\t \t \t
\t \t \t return var;
\t \t } else {
\t \t \t puts("Incorrect syntax.\n");
\t \t }
\t }
\t putchar('\n');
\t printf("Var inside asc %d\n", var);
}
int main() {
\t char name;
\t bool eof = false;
\t \t
\t if ((file = fopen("messages.txt", "r")) == NULL) {
\t \t puts("WRONG FILE\n");
\t \t return 1;
\t }
\t while(!feof(file)) {
\t \t
\t \t name= asc('\n', &eof);
\t
\t \t printf("Var main: %d\n", name);
\t }
\t fclose(file);
\t return 0;
}
Я думаю, вы обнаружите, что fgetc получает тип int, а не char. –
Возвращаемое значение недействительно, когда отображается символ «Вар внутри asc ...». – BLUEPIXY
Спасибо, ребята, за ваши комментарии. Итак, Дэвид, как вы предлагаете мне хранить значение этого слова в переменной и возвращать его? –