I need a Programmer

Cancelado Publicado hace 3 años Pagado a la entrega
Cancelado Pagado a la entrega

Your task is to develop a C program, called ascii2bin, that

reads a string of 1's and 0's as ASCII digits, and

outputs the equivalent decimal number

Your program must

exercises the read() system call to read a single byte, at a time, from stdin

validate that the read byte is appropriate for conversion, e.g., it must be either an ASCII '0' or '1'

converts each byte into an integer value via a mathematical expression

uses the resulting integer as part of the calcuation to determine the final number

identifies the end of a input string by either end of file or by a new line

End of file is detected when read() returns the value '0'

A new line is identified in the ASCII table as either: newline, nl, LF, or \n'

prints this final number on stdout

returns a value of 0 upon success and 1 otherwise

The Algorithm

offset = ?;

number = 0;

retval = read(0, &ascii_value, 1);

while (retval == 1)

digit = ascii_value - offset;

number = number << 1 + digit;

retval = read(0, &ascii_value, 1);

printf("%d\n", number);

return 0;

Validation Checks:

You should add additional validation checks to your code to catch potential errors. At a minimum, validate the following:

that each ASCII input character is one of the following characters: '0', '1', or '\n'

that the calculated number does not exceed 2^32

I am having trouble with this program I have most of the code but my output does not match the Professors completely:

#include <stdio.h>

#include <unistd.h>

int main()

{

int offset = 48; // ascii value of '0'

int number = 0;

char ascii_value;

int retval = read(0, &ascii_value, 1);

while ((retval == 1) && (ascii_value != '\n')) {

int digit = ascii_value - offset;

if ((digit == 1) || (digit == 0))

number = (number << 1) + digit;

retval = read(0, &ascii_value, 1);

}

printf("%u\n", number);

return 0;

}

These are his test file information:

$ script [login to view URL]

$ ascii2bin

0101

^d

5

$ cat [login to view URL] | ./ascii2bin ; echo $?

54356

0

$ cat [login to view URL] | ./ascii2bin ; echo $?

138

0

$ cat [login to view URL] | ./ascii2bin ; echo $?

2863311530

0

$ cat [login to view URL] | ./ascii2bin ; echo $?

4294967295

0

$ cat [login to view URL] | ./ascii2bin ; echo $?

1

Programación en C

Nº del proyecto: #29458100

Sobre el proyecto

9 propuestas Proyecto remoto Activo hace 3 años