Мое первое сообщение :) Я написал небольшую программу, в которой я прочитал значение из текстового файла и сделаю его напечатанным как есть, а затем напечатаю его эквивалентное двоичное значение Но что Я столкнулся с проблемой - значение, которое я печатаю, отличается от значения, указанного в файле , например. У меня есть 23 в моем текстовом файле, и когда я пытаюсь прочитать его и распечатать значение, которое я получаю 1 , у кого-то есть представление о том, чего мне не хватает или где я ошибаюсь. Я отправляю мой код здесь Спасибо заранееНе читайте правильное значение при обработке файлов в C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
char number_read = 0;
char number = 0;
char number_of_ones = 0;
char remainder_value = 0;
char binary = 0;
char base = 0;
int main()
{
FILE *fp;
fp = fopen ("File.txt","r");
while(1)
{
number_read = fgetc(fp);
if(feof(fp))
{
break ;
}
printf("\nnumber is=%c", number_read);
while (number_read>0)
{
remainder_value = number_read % 2;
/* To count no.of 1s */
if (remainder_value == 1)
{
number_of_ones++;
}
binary = binary + remainder_value * base;
number_read = number_read/2;
base = base * 10;
}
}
fprintf("\nINPUT number is = %d\n", number);
fprintf("\nIt's in the binary number is = %d\n", binary);
fprintf("\nNo.of 1's in the binary number is = %d\n", number_of_ones);
fclose(fp);
return 0;
}
Когда вы читаете характер, как «1», вы получаете значение ASCII, соответствующее этот глиф в наборе символов ... не целое число 1. Вы должны конвертировать из ASCII в целочисленный эквивалент перед его использованием для арифметических операций. –