#include<stdio.h>
#include<string.h>
int main()
{ char c[]="China";
char s[5]={'C','h','i','n','a'};
printf("%d\n",strlen(s));
printf("%d\n",sizeof(s));
return 0;
}
這個 程式的strlen輸出是多少,為什么?
uj5u.com熱心網友回復:
你的S定義的有問題 字串陣列要以\0結尾 你定義的S 5個位元組 但是又輸入了5個值 程式想讀取\0讀取到s[5]的位置了 s[5]恰巧又是C[]的陣列,所以你的strlen(s)不是5 而是10uj5u.com熱心網友回復:
字串和字符陣列還是有點差別的.#include<stdio.h>
#include<string.h>
int main()
{
char c[] = "China";
char s[5] = {'C','h','i','n','a'};
printf("%d\n", strlen(s));
printf("%d\n", sizeof(s));
for(int i = 0; i < 10; i++){
printf("%c, %p\n", s[i], &s[i]);
}
return 0;
}
uj5u.com熱心網友回復:
strlen的輸出不確定。因為strlen以'\0'作為結束標志,字符陣列s賦值滿了且沒有\0,發生陣列越界,帶來不確定的結果。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/53578.html
標籤:C語言
上一篇:請教大佬
下一篇:求解
