69,371
社区成员
发帖
与我相关
我的任务
分享
雄鹿 公牛
猛龙 76人
网 奇才
猛龙 76人
老鹰 魔术
热火 尼克斯
太阳 马刺
雄鹿 超音速
国王 森林狼
#include "stdlib.h"
int get_row(FILE* ifile)
{
long s = ftell(ifile);
int row = 0;
char buf[1024];
fseek(ifile, 0, SEEK_SET);
while (fgets(buf, 1024, ifile) != 0)
if (*buf && *buf != '\n')
++row;
fseek(ifile, s, SEEK_SET);
return row;
}
int get_col(FILE* ifile)
{
long s = ftell(ifile);
int col = 0;
char buf[1024];
fseek(ifile, 0, SEEK_SET);
if (fgets(buf, 1024, ifile))
{
char* p = buf;
while (*p)
{
if (*p == ' ' || *p == '\n')
++col;
++p;
}
}
fseek(ifile, s, SEEK_SET);
return col;
}
int main()
{
FILE* ifile = fopen("test.txt", "r");
int row = 0;
int col = 0;
int r = 0;
int c = 0;
char buf[1024];
char (**ary)[64] = 0;
if (!ifile)
return 1;
row = get_row(ifile);
col = get_col(ifile);
ary = (char(**)[64])malloc(sizeof(char(*)[64]) * row);
for (; r < row; ++r)
ary[r] = (char(*)[64])malloc(sizeof(char[64]) * col);
r = 0;
while (fgets(buf, 1024, ifile))
{
char* p = buf;
char* t = buf;
if (!(*buf) || (*buf) == '\n')
continue;
c = 0;
while (*p && c < col)
{
if (*p == ' ' || *p == '\n')
{
strncpy(ary[r][c], t, p - t);
ary[r][c][p - t] = 0;
t = p + 1;
++c;
}
++p;
}
++r;
}
for (r = 0; r < row; ++r)
{
for (c = 0; c < col; ++c)
printf("%s ", ary[r][c]);
printf("\n");
}
for (r = 0; r < row; ++r)
free(ary[r]);
free(ary);
fclose(ifile);
return 0;
}
雄鹿 公牛
猛龙 76人
网 奇才
猛龙 76人
老鹰 魔术
热火 尼克斯
太阳 马刺
雄鹿 超音速
国王 森林狼
请按任意键继续. . .
CString test3::GetExcelDriver()
{
char szBuf[2001];
WORD cbBufMax = 2000;
WORD cbBufOut;
char *pszBuf = szBuf;
CString sDriver;
// 获取已安装驱动的名称(函数在odbcinst.h里
if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
return "";
// 检索已安装的驱动是否有Excel
do
{
if (strstr(pszBuf, "Excel") != 0)
{
//发现 !———
sDriver = CString(pszBuf);
break;
}
pszBuf = strchr(pszBuf, '\0') + 1;
}
while (pszBuf[1] != '\0');
return sDriver;
}
void test3::readFromExcel(int radio,char* rate)
{
CDatabase database;
CString sDriver; // Excel安装驱动
CString sExcelFile = "demo.xls"; // 要建立的Excel文件
CString sSql;
CString sItem1,sItem2;
TRY
{
sDriver = GetExcelDriver();
// 创建进行存取的字符串
sSql.Format("DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",
sDriver, sExcelFile, sExcelFile);
// 创建数据库 (既Excel表格文件
if( database.OpenEx(sSql,CDatabase::forceOdbcDialog ) )
{
CRecordset recset(&database);
sSql = "SELECT Ref, Deg, Mapped_Mos "
"FROM demo "
"ORDER BY Ref desc";
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
char a[50];
memset(a,50,sizeof(char));
char b[50];
memset(b,50,sizeof(char));
double RESULT;
CString alg;
while (!recset.IsEOF())
{
recset.GetFieldValue("Ref", sItem1);
recset.GetFieldValue("Deg", sItem2);
strcpy(a,sItem1);
strcpy(b,sItem2);
if (sItem1.IsEmpty())
{
break;
}
if (radio==1)
{
alg = "BSD";
RESULT=BSD( a, b);
}
if (radio==2)
{
alg = "rate";
RESULT = webP862::web_pesq(rate, a, b);
}
if (radio==0)
{
alg = "pesq";
RESULT = pesq(rate, a, b);
}
CString str;
str.Format("%f", RESULT);
//----------------lg--------------------------
CString total = str;
sSql.Format( "update demo set Mapped_Mos = '%s' where Ref = '%s' and Deg = '%s'", total, sItem1,sItem2);
database.ExecuteSQL(sSql);
int nI = m_ListCtrl->GetItemCount();
LV_ITEM lvi;
lvi.mask = LVIF_TEXT | LVIF_STATE;
lvi.iItem = nI;
lvi.iSubItem = 0;
lvi.iImage = 0;
lvi.stateMask = LVIS_STATEIMAGEMASK;
lvi.state = INDEXTOSTATEIMAGEMASK(1);
lvi.pszText = (char*)(LPCTSTR)"";
int result = m_ListCtrl->InsertItem(&lvi);
if (result != -1)
{
m_ListCtrl->SetItemText(nI, 0, alg);
m_ListCtrl->SetItemText(nI, 1, rate);
m_ListCtrl->SetItemText(nI, 2, sItem1);
m_ListCtrl->SetItemText(nI, 3, sItem2);
m_ListCtrl->SetItemText(nI, 4, str);
}
//-----------lg-------------------------------
recset.MoveNext();
}
}
database.Close();
}
CATCH(CDBException , e)
{
AfxMessageBox(e->m_strError);
}
END_CATCH;
}
double test3::corr_Excel(double* a,double*b,double* p,int* num2)
{
CDatabase database;
CString sDriver; // Excel安装驱动
CString sExcelFile = "demo.xls"; // 要建立的Excel文件
CString sSql;
CString sItem1,sItem2;
// double a[2000];
// memset(a,2000,sizeof(double));
// double b[2000];
// memset(b,2000,sizeof(double));
char c[20];
memset(c,20,sizeof(char));
double d = 0.0;
int k = 0;
double r_result = 0.0;
double r__result = 0.0;
TRY
{
sDriver = GetExcelDriver();
// 创建进行存取的字符串
sSql.Format("DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",
sDriver, sExcelFile, sExcelFile);
// 创建数据库 (既Excel表格文件)
if( database.OpenEx(sSql,CDatabase::noOdbcDialog ) )
{
CRecordset recset(&database);
// 设置读取的查询语句.
sSql = "SELECT Ref, Deg, Mapped_Mos, Mos "
"FROM demo "
"ORDER BY Ref desc";
// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
// 获取查询结果
while (!recset.IsEOF())
{
//读取Excel内部数值
recset.GetFieldValue("Mapped_Mos", sItem1);
recset.GetFieldValue("Mos", sItem2);
if(sItem2.IsEmpty())
{
if (k==0)
{
AfxMessageBox("主观分未列入表格!");
return 2.0;
}
break;
}
//AfxMessageBox(sItem2);
strcpy(c,sItem1);
d = atof(c);
a[k]=d;
strcpy(c,sItem2);
d = atof(c);
b[k]=d;
// 移到下一行
recset.MoveNext();
k++;
}
}
// 关闭数据库
database.Close();
r_result = corr(a,b,k);
*p = RSME(a,b,k);
*num2 = k;
return r_result;
}
CATCH(CDBException , e)
{
return 2.0;
AfxMessageBox(e->m_strError);
}
END_CATCH;
}
/* fgets exmaple */
#include <stdio.h>
int main()
{
FILE * pFile;
char string [100];
pFile = fopen ("myfile.txt" , "r");
if (pFile == NULL) perror ("Error opening file");
else {
fgets (string , 100 , pFile);
puts (string);
fclose (pFile);
}
return 0;
}