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
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.