Преобразование текстового файла в бинарный: дробное число неправильно переводится - C (СИ)
Формулировка задачи:
Здравствуйте. Мой текстовый файл состоит из строк последнее слово которых - дробное число. При запуске ключ -f значит распечатать содержимое полученного бинарного файла. Числа вида 456.0 переводятся нормально, а вот 0.44 переводится в 0.00000000. Плюс ко всему почему то в 79 строке никак не реагирует на ключ -f, то есть flag_f остается равным нулю, хотя при отладке argv[2] = "-f". Помогите пожалуйста найти ошибку.
#include <stdio.h> #include "functions.h" #include "point.h" void usage() { printf("Usage: program <input txt file> <output binary file> [-f] \n"); } int zero(char *filename) { FILE *f1=fopen(filename, "wb"); fclose(f1); } int print(char* filename) { country s1; FILE *f1=fopen(filename, "rb"); if (f1==NULL) { return 1; //ошибка чтения файла } while (!feof(f1)) { if (fread(&s1, sizeof(country),1,f1)) printf("%s %d %s %f\n",s1.name, s1.population, s1.capital, s1.space); } fclose(f1); return 0; } int TxtToBin(char* txtfilename, char* binfilename) { FILE *in; country c; int s=sizeof(c); char mystring[100]; if ((in=fopen(txtfilename, "r")) != NULL) { while (!feof(in)) { if (fgets(mystring, 100, in) != NULL ) { char* pch = strtok (mystring," "); int i=0; while (pch != NULL) { switch(i) { case 0: strcpy(c.name,pch); break; case 1: c.population = atoi(pch); break; case 2: strcpy(c.capital,pch); break; case 3: c.space = atoi(pch); break; } pch = strtok (NULL, " "); i++; } int result; if (result = append(binfilename, c)) return result; } } fclose(in); } else return 3;//ошибка открытия текстового файла return 0; } int main(int argc, char* argv[]) { int flag_f=0; char* binfilename; char* txtfilename; if (argc < 3) { usage(); return 1; } else { txtfilename = argv[1]; binfilename = argv[2]; int i; for (i = 3; i < argc; i++) { if (argv[i] == "-f") flag_f=1; } } zero(binfilename); int result = TxtToBin(txtfilename, binfilename); //обработка возможных ошибок (1,2,3) if (flag_f) { int result = print(binfilename); //обработка ошибки } return 0; }
Решение задачи: «Преобразование текстового файла в бинарный: дробное число неправильно переводится»
textual
Листинг программы
c.space = atoi(pch)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д