|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
同样都是下面的代码,但是输出却不同,字符串的长度不一致;#include "stdio.h"
#include "string.h"
void main(void){
char str1[10] = "abc";
char str2[3] = "gfh";
// strcpy(str1, str2);
printf("\r\n 1 len=%d, size=%d str=%s", strlen(str1), sizeof(str1), str1);
printf("\r\n 2 len=%d, size=%d str=%s", strlen(str2), sizeof(str2), str2);
printf("\r\n (1,%d,%d, \r\n (2,%d,%d", *str1, &str1, *str2, &str2);
int i;
printf("\r\n str1 len[");
for(i=0; i<strlen(str1); i++){
printf("%d ", str1[i]);
}
printf("\r\n str1 size[");
for(i=0; i<sizeof(str1); i++){
printf("%d ", str1[i]);
}
printf("\r\n str2 len[");
for(i=0; i<strlen(str2); i++){
printf("%d ", str2[i]);
}
printf("\r\n str2 size[");
for(i=0; i<sizeof(str2); i++){
printf("%d ", str2[i]);
}
}
在centos下的输出结果为:
1 len=3, size=10 str=abc
2 len=6, size=3 str=gfhabc
(1,97,-1080638702,
(2,103,-1080638705
str1 len[97 98 99
str1 size[97 98 99 0 0 0 0 0 0 0
str2 len[103 102 104 97 98 99
str2 size[103 102 104
在windows下 使用dev-c++编译输出结果为:
1 len=3, size=10 str=abc
2 len=3, size=3 str=gfh
(1,97,6487552,
(2,103,6487536
str1 len[97 98 99
str1 size[97 98 99 0 0 0 0 0 0 0
str2 len[103 102 104
str2 size[103 102 104
--------------------------------
现在有几点搞不明白
1.centos下,为什么定义的str2明明是3个字符,使用strlen返回的长度却是6
2.centos下,这里改为%llu输出时,printf("\r\n (1,%d,%llu, \r\n (2,%d,%llu", *str1, &str1, *str2, &str2);
改语句输出变为
(1,97,445595678258,
(2,-1080920529,13804225722149279924 |
|