Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

The program should take a input file of numbers c string convert it to integers,

ID: 3814595 • Letter: T

Question

The program should take a input file of numbers c string convert it to integers, and then convert it back to string. But for whatever reason, conversion for integers is not right.

For example,

number file contains:

80

74

63

It will give me:

762

702

592

#include<stdio.h>
#include<string.h>
#include<stdbool.h>

int myAtoi(char *str)
{
int result = 0;
int i =0;
int sign = 1;
if(str[0] == '-')
{
sign = -1;
i++;
}
for(; str[i] != ''; ++i)
{
result = result * 10 + str[i] - '0';
}
return sign* result;

}

void reverse(char *str)
{
int i;
int length = strlen(str);
char *begin, *end, temp;
begin = str;
end = str;

for(i = 0; i < length - 1; ++i)
end++;
for(i = 0; i < length/2; ++i)
{
temp = *end;
*end = *begin;
*begin = temp;

begin++;
end--;
}
}

char *myItoa(int num, char *str)
{
int i = 0;
bool isNegative = false;

if(num<0)
{ isNegative = true;
num = -num;
}
while(num!= 0)
{
str[i++] = num % 10 + '0';
num = num/10;
}
if(isNegative)
str[i++] = '-';

str[i] = '';
reverse(str);
return str;
}

int main()
{
FILE *fp;
char s[100];
fp = fopen("numbers", "r");
while(fgets(s, sizeof(s), fp))
{
int i = myAtoi(s);
printf("%d ", i);
}

return 0;
}

Explanation / Answer

//u can find the change in fnction myAtoi , under comment changed by chegg EA.

#include<stdio.h>

#include<string.h>
#include<stdbool.h>
int myAtoi(char *str)
{
   int result = 0;
   int i = 0;
   int sign = 1;
   if (str[0] == '-')
   {
       sign = -1;
       i++;
   }
   for (; str[i] != ''; ++i)
   {
       /*Changed by chegg EA, end of the new was also included when read using fget, so changed logic to check ' '*/
       if (str[i] == ' ')
           break;
       result = result * 10 + str[i] - '0';
   }
   return sign* result;
}
void reverse(char *str)
{
   int i;
   int length = strlen(str);
   char *begin, *end, temp;
   begin = str;
   end = str;
   for (i = 0; i < length - 1; ++i)
       end++;
   for (i = 0; i < length / 2; ++i)
   {
       temp = *end;
       *end = *begin;
       *begin = temp;
       begin++;
       end--;
   }
}

char *myItoa(int num, char *str)
{
   int i = 0;
   bool isNegative = false;
   if (num<0)
   {
       isNegative = true;
       num = -num;
   }
   while (num != 0)
   {
       str[i++] = num % 10 + '0';
       num = num / 10;
   }
   if (isNegative)
       str[i++] = '-';
   str[i] = '';
   reverse(str);
   return str;
}
int main()
{
   FILE *fp;
   char s[100];
   fp = fopen("numbers.txt", "r");
   if (!fp)
   {
       printf("Not able to open input file ");
       return -1;
   }
   while (fgets(s, sizeof(s), fp))
   {
       int i = myAtoi(s);
       printf("%d ", i);
   }
   return 0;
}

---------------------------------------------------------------

//outpt

80
74
63