2013-09-27 110 views
-3
#include "stdafx.h" 
#include<string.h> 
#include<stdio.h> 


int _tmain(int argc, _TCHAR* argv[]) 
{ 

    char abc[28] ; 
    //abc[26] = '\0'; 
    abc[0]=65; 
    char hj = abc[0]; 
    for(int i=0; i<26; i++) 
    { 
    abc[i]=++hj; 

    printf("%d\n",i); 

    } 
    int l=strlen(abc); 
    abc[l]='\0'; 
    printf("length of abc_array is %d\n",(strlen(abc))); 
    for(int i=0; i<strlen(abc); i++) 
    { 
    printf("%c",abc[i]); 
    printf("\n"); 
    } 

} 

字符串的輸出長度是39,這是錯誤的。什麼是錯誤?strlen()沒有給出正確的值?

+3

'strlen'需要一個空值。你不能用它來確定在哪裏放置null。 – chris

+1

這與C++有什麼關係?這顯然是一個C問題。 – 2013-09-27 20:15:31

+0

您評論過的部分'// abc [26] ='\ 0';'是正確的,取消註釋 – P0W

回答

1

在撥打strlen之前,您需要設置abc[i] = '\0'

0

標準strlen函數只適用於字符串。字符串是由零個字符終止的字符序列。將不是字符串的東西傳遞給strlen會導致未定義的行爲。

您在代碼中傳遞給strlen的內容不是字符串。這就是爲什麼你從strlen得到毫無意義的結果。

相關問題