943,844 Members | Top Members by Rank

Ad:
  • C Discussion Thread
  • Unsolved
  • Views: 3614
  • C RSS
Nov 25th, 2008
0

Problem Converting String to Float - Using ATOF

Expand Post »
Hello yet again... Anyway, I'm trying to convert a string that has the form of "1097.04", that is, decimal fixed point with two digits after the decimal point. My code currently reads this number from a file then stores it in a *char. Then when i try to convert this *char into a double it instead returns a 0. Here's my code:

  1. char *price_1, *price_2;
  2. double price1, price2;
  3.  
  4. if(strncmp(t, stock_id, 5) == 0)
  5. {
  6. printf("Found the stock in %s!\n", argv[1]);
  7. // printf ("Splitting string \"%s\" into tokens:\n", t);
  8. out = strtok(t," ");
  9.  
  10. int i = 0;
  11. while (i < 1)
  12. {
  13. printf ("%s\n", out);
  14. out = strtok(NULL, " ");
  15. price_1 = out;
  16. i++;
  17. }
  18. //printf("Printing price_1: %s\n", price_1);
  19. while (i < 2)
  20. {
  21. out = strtok(NULL, " ");
  22. price_2 = out;
  23. i++;
  24. }
  25. printf("Printing price_1: %s\n", price_1);
  26. price1 = atof(price_1);
  27. printf("Printing price1: %d\n", price1);
  28.  
  29. break;
  30. }

Where 't', is the buffer that reads from the file line-by-line and argv[1] is the file being read in, 'datafile', which is of form [Stock] [Price_1] [Price_2]:
IPHON 400.00 500.00
WALMA 50.00 75.00
KROGE 100.00 120.00
CHOOC 24.00 34.24
MICRO 1234.56 2000.00

Here's my output:

-bash-3.2$ ./StockOrders datafile logfile server client
Broker is waiting for request...
Request quote to buy MICRO by 5555.

Client says, "Request quote to buy MICRO by 5555.
."
Client wants to buy...
Printing stock_id: MICRO
Printing cust_id: 5555
Broker is generating quote...
Found the stock in datafile!
MICRO
Printing price_1: 1234.56
Printing price1: 0
-bash-3.2$


Thanks again!
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
Krysis is offline Offline
15 posts
since Nov 2008
Nov 25th, 2008
0

Re: Problem Converting String to Float - Using ATOF

I'm thinking that your problem is actually the format character in the last printf. '%d' is for decimals/integers. Try using a '%f' instead.
Reputation Points: 344
Solved Threads: 116
Practically a Master Poster
Murtan is offline Offline
670 posts
since May 2008
Aug 12th, 2010
0

Help!

I am having a very similiar problem. Read in a string from a file and need to preform basic math equations with it, therefor assuming it can't be in string form. I am attempting to use ATOF but am getting 0's and nan's in return...any suggestions?


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

int main()
{
/*Define Everything*/
FILE * fp;
FILE * fp2;
char String[50000];
char read[500000];
char out[500000];
char Diff[100];
float Decimal;
int i, j;

strcpy(read, "GREP_MARK");
strcpy(out, "Average");
fp = fopen(read,"r");
fp2 = fopen(out, "w+");

while (!feof(fp))
{
i = 0;
j = 334;
Decimal = 0;
fgets(String, 50000, fp);
while (i<=1)
{
Diff[i] = String[j];
j++;
i++;
}
Decimal = atof(Diff);
fprintf(fp2,"The int is: %f\n", Decimal);
}
}
Reputation Points: 10
Solved Threads: 0
Newbie Poster
Astro2010 is offline Offline
3 posts
since Aug 2010

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C Forum Timeline: Set font size in C program
Next Thread in C Forum Timeline: Converting from a string to a decimal?





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC