• strlen问题


            最近遇到一个strlen问题。

            程序代码如下:

    #include <stdlib.h>
    #include <stdio.h>
    
    int main(int argc, char *argv[]){
    	int i;
    	char a[1] = {'c'};
    
    	for (i = 0; i <= strlen(a) - 2; i++)
    	{
    		printf("i = %d; (strlen(a)-2) = %d;\n", i, (strlen(a) - 2));
    	}
    	return 0;
    }

           windows平台下输出结果:

           strlen为什么不等于1?

           原因在strlen在实现时,遇到第一个0x00即终止.

           而char a[1] = {'a'};明显是没有以0x00结尾;修改代码

    #include <stdlib.h>
    #include <stdio.h>
    
    int main(int argc, char *argv[]){
    	int i;
    	char a[2] = {'c', 0x00};
    	//char a[2] = {'c','\0'}; //OK
    
    	printf("strlen(a)     = %d;\n", strlen(a));
    	printf("(strlen(a)-2) = %d;\n", (strlen(a) - 2));
    	for (i = 0; i <= strlen(a) - 2; i++)
    	{
    		printf("i = %d; (strlen(a)-2) = %d;\n", i, (strlen(a) - 2));
    	}
    	return 0;
    }

          输出结果:


          一切OK~



  • 相关阅读:
    Java 连接 Memcached 服务
    Memcached命令-存储命令-查找命令-清理命令
    memcache安装
    Python爬虫模拟登录带验证码网站
    HashMap原理
    redis 在java中的使用
    redis 事务
    Redis命令续
    Redis命令
    ApplicationListener用法
  • 原文地址:https://www.cnblogs.com/youngerchina/p/5624632.html
Copyright © 2020-2023  润新知