Hi Dennis, int scan_assign_double(ScanFILE *psf, double *pd, void *userdata, ScanFLAG flags){ char temp[100]; if (scan_nonblank(psf) == '=') fgetc(psf->fp); if (scan_word(psf, temp, sizeof(temp)-1)) return -1; fprintf( stderr, "Reading the String : %s\n", temp); if (sscanf(temp, " %lf ", pd) != 1) { error_out(err_scan_expect_double, temp, psf->filename, psf->linum); return -1; } fprintf( stderr, "%s %lf\n\n", "After sscanf %lf :" , *pd); if (scan_nonblank(psf) == ';') fgetc(psf->fp); return 0; } Resulting in : Reading the String : 0.7 After sscanf %lf : 0,000000 Reading the String : 5257.872067 After sscanf %lf : 5257,000000 Reading the String : 152.498875 After sscanf %lf : 152,000000 Reading the String : 12.0 After sscanf %lf : 12,000000 Reading the String : 0.7 After sscanf %lf : 0,000000