小弟在写一个从txt文件中读取数据,然后更新数据库的程序。读取函数如下:
void CTxt2oraDlg::OnReadfile()
{
char buf[128];
char ntemp[128];
int nBegin = 0;//nBegin nEnd一开始指向buf头
int nEnd = 0;
while(TxtFile.ReadString(buf,128))
{
for(; nEnd<sizeof(buf);nEnd++)
{
if (nEnd == )
{
strncpy(ntemp,buf,sizeof(nEnd - nBegin));
//把空格符号前的那段数据放到一个数组里面
nEnd = nEnd + 1;//nEnd指向空格下一个字符
break;
//在这里进行更新数据库的操作。。
}
if (nEnd == \n)//如果是一行结束,转到下一行
{
break;
}
}txtfile.Addstring(ntemp);//把内容在listbox显示
}
}
但是为什么输出的是乱码怎么才可以实现我用这个函数的时候全部更新数据库中的东西。就是说比如天txt文件中数据如下:
age name id
12 aaa 121243
12 2sdf qwr
我怎么才可以读一个数据,然后更新,再读一个,救命阿,
FILE *fp = fopen( "a.txt" , "r+" );
if( fp != NULL )
{
char szAge[10] , szName[20] , szid[10];
while( !feof( fp ) )
{
fscanf( fp , "%s %s %s\n" , szAge , szName , szid );
TRACE( "szAge = %s , szName = %s , szId= %s\n" , szAge , szName , szid );
// 在这里更新数据库并在ListBox中显示
}
fclose( fp );
}
去掉你程序中的sizeof,计算长度就要两者之差不就可以了吗?为什么还要用sizeof.
哈哈,真巧了,我现在正在做类似的程序,留言给我,我给你写一些代码
if (nEnd == )
这样写可以吗?我记得好像不行吧,空格的ASCII为32,
可以这样写
if nEnd==32
不过你的文本文件中这里不一定就是32号的空格,也许是别的不能显示的ASCII字符。