为什么在Linux中strlwr()不能编译通过,已经查看过<string.h>,的确在头文件中没有

为什么在Linux中strlwr()不能编译通过,已经查看过<string.h>,的确在头文件中没有,第1张

strlwr和strupr都不是标准的C库函数!有些编译器不支持很正常,编译器不支持的,只能自己定义这两个函数并且用代码自己去实现它。个人使用过VC++2010,是可以编译通过的,证明VC++2010里边的编译器支持这两个函数。而linux中的GCC编译器则编译不通过,证明linux下的GCC编译器不支持这两个函数。

代码越界了.

分配了5个字符, 实际赋值了8个.

导致异常.

改成

#include<stdio.h>

#include<string.h>

int main()

{

    char a[10] = "windows"//8以上均可.

    printf("strlen(a) = %d.\n",strlen(a))

    return 0

}

不管什么平台,都会是7

你换台机器就不是5 8的值了! 所谓的固定,是你机器内存情况刚好处在那种状态下。

你没有\0,strlen()就会自动去找\0位置,这个0位置在什么位置是不确定的。

strlen(s)函数,从s首地址开始一直统计到\0位置,其中有几个字节就输出长度为几!

#include <stdio.h>

#include <string.h>

void main()

{

int i=0 //这里加上这个,你再去试,结果一定会有变化的,原理,自己思考一下吧

    char p[] = {1,2,3,4,5,66,7,}

    char q[] = {1,2,3,4}

    char r[] = {1,2,3,4}

    printf("length:%d\n",strlen(p))

    printf("length2:%d\n",strlen(q))

    printf("length3:%d\n",strlen(r))

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/5910564.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-08
下一篇2023-03-08

发表评论

登录后才能评论

评论列表(0条)

    保存