最近在MFC做一个文件加密软件,用GetDlgItemText 函数,将其中 nMaxCount参数设为9,当需要控制编辑框中输入密钥的个数时,我用strlen确定传过来字符个数。想要用8个字符作为加密密钥,,但是我在做控制时,
else if (strlen(ch_Key) >= 9)
{
MessageBox("密钥长度过长! 重新输入!!!!");
return;
}这个代码好像不起作用,只要输入的字符个数是8个以上,都会继续执行,并不会返回。然后我又写了个测试代码,如图。
发现结果如图。
我也不知道为什么呀,我查了字符串数组,也没看到什么有用的。所以来问问大家。感激不尽。

解决方案 »

  1.   

    你提供的两段代码,没有什么关联啊?另外,对于char[] 数组,scanf是,不应该是 &str,应该是 scanf("%s", str),因为str本身就是指针(数组)。
      

  2.   

    调试看看strlen 返回多少,字符串发出来看看就知道了
      

  3.   

    其实电脑开机后物理内存的每个字节都是可读写的,从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
      

  4.   

    scanf("%3s",str);
      

  5.   

    scanf 不能取地址符&