如题,data.txt文件如下:(每行一个数据,有换行)
0.602634
0.603015
0.602634
0.602634
0.603015
如何将他读取并保存到一个数组float m[]中呢?
------解决方案--------------------
- C/C++ code
void ReadFloatData(float *m){ FILE *fp; int i = 0; fp = fopen("data.txt", "r"); if(fp) { while(!feof(fp)) { fscanf(fp, "%f", &m[i++]); } fclose(fp); }}
------解决方案--------------------
下面是我实际的eVC代码:
- C/C++ code
void GetOneLineStr(FILE *pf, LPTSTR pszBuf, int nCodeType){ if(nCodeType==0) // 编码类型: 0=ANSI, 1=UNICODE { while( !feof(pf) ) { *pszBuf = fgetc(pf); // _fgettc() // 从流读取一个字符 if(*pszBuf == _T('\n')) break; pszBuf++; } *(pszBuf-1) = _T('\0'); } else if(nCodeType==1) { while( !feof(pf) ) { *pszBuf = (char)fgetwc(pf); // _fgettc() // 从流读取一个字符 if(*pszBuf == _T('\n')) break; pszBuf++; } *(pszBuf-1) = _T('\0'); }}BOOL LoadFile(){// CString strFileName = _T("\\Disk\\data.txt"); CString strFileName = _T("C:\\data.txt"); int nCodeType = 0; // 编码类型: 0=ANSI, 1=UNICODE FILE * pfile; TCHAR uzLine[1024]; float m[1024]; int i = 0; pfile = _tfopen(strFileName, _T("rb")); if( pfile ) { int ch1 = 0, ch2 = 0; ch1 = fgetc(pfile); ch2 = fgetc(pfile); if(ch1==0xFF && ch2==0xFE) { nCodeType = 1; // 编码类型: 0=ANSI, 1=UNICODE } else { fseek(pfile, 0L, SEEK_SET); } fseek(pfile, 0L, SEEK_SET); while( !feof( pfile )) { if( feof(pfile) ) goto exit; GetOneLineStr(pfile, uzLine, nCodeType); m[i] = (float)atof(uzLine); // CString str; // str.Format("%f", m[i]); // AfxMessageBox(str); // 测试,是你要的结果 i ++; } fclose(pfile); }exit: return TRUE;}
------解决方案--------------------
我看错了!上面的回复取消!