能力值:
( LV6,RANK:90 )
|
-
-
2 楼
不是数字0到9并且不为小数点时,返回FALSE
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
3 楼
isdigit 函数 试试
上面的循环是检测 每个字符是否都是数字.
if(i<n) /*这句代码是什么作用啊?*/
{
return FALSE;
}
如果i<n 说明 字符串中有非数字的字符(如果没有非数字的字符,那么执行完后,i = n)
for(i=0;i<n;i++)
{
if((DataString[i]<'0'||'9'<DataString[i])&&('.'!=DataString[i]))
{
return FALSE;
}
}
return TRUE;
就OK了
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
楼上的我还是没明白啊 把我的代码截取一部分就ok?
|
能力值:
( LV13,RANK:420 )
|
-
-
5 楼
if(i<n) /*这句代码是什么作用啊?*/ { return FALSE; }
3L说了。
要想保证只有一个小数点可以增加一个小数点计数
1 2 3 4 5 6 7 8 9 10 11 12 | int iPointNum=0;
for (i=0;i<n;i++)
{
if ((DataString[i]< '0' || '9' <DataString[i])&&( '.' !=DataString[i]))
{
break ;
}
if ( '.' =DataString[i] && iPointNum !=0)
{
break ;
}
}
|
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
break后循环不就over了吗,那么它只要发现有一个是字母的就判断编辑框里不是数字,它不能判断字母和数字混合的那种
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
先感谢大牛们解答!
================
我终于明白3楼说的了 最后i=n时 循环停止了 如果i<n说明 循环执行到一半就出来了 说明遇到不合格品了
=====================
那我把代码改成这样 看看行不行
BOOL DataLegitimacy(TCHAR * DataString)
{
if(NULL==DataString[0])
{
return FALSE;
}
else
{
int i,n,iponitnum=0;
n = strlen(DataString);
for(i=0;i<n;i++)
{
if ('.' ==DataString[i]) iponitnum++;
}
{
if ('.' =DataString[i] && iPointNum !=0)
break;
}
{
if((DataString[i]<'0'||'9'<DataString[i])&&('.'!=DataString[i]))
{
break;
}
}
if(i<n)
{
return FALSE;
}
else
{
return TRUE;
}
}
}
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
哦 耶 终于搞定了 感谢几位的解答 ,感谢看雪 !!!!! 其他论坛没人答复我的 在这里一会会就搞定了
最终的VC代码我粘贴出来吧
#include "stdafx.h" #include <windows.h> #include <windowsx.h> #include "resource.h" #include "MainDlg.h"
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); }
return FALSE; }
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { return TRUE; }
BOOL DataLegitimacy(TCHAR * DataString) { if(NULL==DataString[0]||'.'==DataString[0]) { return FALSE; } else { int i,n,ipointnum=0; n = strlen(DataString); for(i=0;i<n;i++) { { if ('.' ==DataString) ipointnum++; } { if('.' ==DataString[n-1]) {break;} } { if ('.' ==DataString && ipointnum >1) {break;} } { if((DataString<'0'||'9'<DataString)&&('.'!=DataString)) { break; } } } if(i<n) { return FALSE; } else { return TRUE; } } } void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { switch(id) { case IDC_OK: { TCHAR str1[256]; GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1)); if(DataLegitimacy(str1)==TRUE) { MessageBox(hwnd,TEXT("ok是合法的数值!"),TEXT("问好"),MB_OK); } else { MessageBox(hwnd,TEXT("no不合法,请正确输入!!!"),TEXT("警告啊"),MB_OK); }
} break; default: break; } }
void Main_OnClose(HWND hwnd) { EndDialog(hwnd, 0); }
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
哎呀,这么玩还不睡
|
|
|