0

Hello friends i have been facing problem in reading from a file consisting of both float values and strings.In need to read them and print them out.

The input in the text file i have been using is

0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 7.0 3.2 4.7 1.4 versicolor
4 6.4 3.2 4.5 1.5 versicolor
5 6.9 3.1 4.9 1.5 versicolor
6 6.3 3.3 6.0 2.5 virginica
7 5.8 2.7 5.1 1.9 virginica
8 7.1 3.0 5.9 2.1 virginica

The code i have written to retreive the values from the file is below.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

float test_array[6][6]={0};
int main()
{
char line [ 128 ];
float  center, temp_dist1 = 0, temp_dist2= 0;
float dmax = 43.71, tcreate = 0.1, distance_sum=0, tremove = 0.1;
static const char filename[] = "iris4.txt";
FILE *file = fopen ( filename, "r" );
char delims[] = " ";
char *result1 = NULL;

double temp_result;
int i = 1,j = 0, temp_j=0;
int result=1;

if ( file != NULL ) 
{
while ( fgets ( line, sizeof (line), file ) != NULL)
{ 
result1 = strtok( line, delims );
while( result1 != NULL ) {

temp_result = atof(result1);
test_array[i][j] = temp_result;
j++;


result1 = strtok( NULL, delims );
}
temp_j = j-1;
i++;
j=0;

}
}
printf("Values for this particular index is = %f\n %s\n ",test_array[3][4],test_array[3][5]);
getch();
return temp_j;
  
}

I am in a fix in how to retrieve both the float values and the strings in this file.I am able to retrieve fthe float values but not the strings.
Please help me out.

3
Contributors
2
Replies
3
Views
8 Years
Discussion Span
Last Post by nucleon
0

You always have 5 float values and then one string. Simple: parse the first 5 as strings and leave the sixth as a string. You wont be able to store the strings in the same float array though.

0

Use fscanf instead of fgets and strtok. E.g.:

float a, b, c, d;
    int n;
    char str[100];
    while (EOF != fscanf (file, "%d %f %f %f %f %s",
                          &n, &a, &b, &c, &d, str))
        printf ("%d %.1f %.1f %.1f %.1f %s\n", n, a, b, c, d, str);
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.