Я пытаюсь прочитать значения в этих строках в переменных с помощью sscanf, и я получаю очень странные результаты.Он работает с некоторыми строками, пока я использую числа с плавающей точкой, но с другими подобными строками с плавающей точкой это не работает, и если я использую двойные числа вместо числа с плавающей точкой, он никогда не будет работать должным образом.
#include <stdio.h>
#include <stdlib.h>
void debug(char* line,int* year, int* month, int* day, double* temp, double* uncertainty,
char country[100]){
int result;
result = sscanf(line, "%i - %i - %i, %lf , %lf , %s", year,
month, day, temp, uncertainty, country);
printf("%i-%i-%i,%f,%f,%s\n",*year, *month, *day, *temp,
*uncertainty, country);
printf("Result:%i\n", result);
}
void debug_f(char* line, int* year, int* month, int* day, float* temp, float* uncertainty,
char country[100]){
int result;
result = sscanf(line, "%i - %i - %i, %f , %f , %s", year,
month, day, temp, uncertainty, country);
printf("%i-%i-%i,%lf,%lf,%s\n",*year, *month, *day, *temp,
*uncertainty, country);
printf("Result:%i\n", result);
}
int main(){
char* error = "1943-09-01,29.27,0.403,Yemen";
char* working = "1972-03-01,4.787,0.342,Slovakia";
int year1, year2, year3, year4;
int month1, month2, month3, month4;
int day1, day2, day3, day4;
double temp1, temp2;
double uncertainty1, uncertainty2;
float temp3, temp4;
float uncertainty3, uncertainty4;
char country1[100], country2[100], country3[100], country4[100];
debug(error, &year1, &month1, &day1, &temp1, &uncertainty1, country1);
debug(working, &year2, &month2, &day2, &temp2, &uncertainty2, country2);
debug_f(error, &year3, &month3, &day3, &temp3, &uncertainty3, country3);
debug_f(working, &year4, &month4, &day4, &temp4, &uncertainty4, country4);
}
Этовывод, который я получаю на своей машине:
1943-0-0,0.000000,0.000000, � \ ��
Результат: 2
1972-3-1,0.000000,0,000000, Словакия
Результат: 6
1943-0-0,0,000000,0,000000,
Результат: 2
1972-3-1,4,787000, 0.342000, Словакия
Результат: 6