2014-10-11 27 views
-8

我將在下週進行測試。並在表格中他們說:「你不能在測試中使用strlen()」 我該怎麼做。使功能與C中的strlen()相同,只包含#include <stdio.h>(沒有其他頭文件)

只能使用!!!

+2

上的strlen做什麼閱讀起來。應該很容易從中找出一個簡單的實現。 – juanchopanza 2014-10-11 12:47:00

+1

很多「經驗豐富」的開發人員現在都知道strlen()是做什麼的。它在一個大數組中或者在一個增量指針的末尾查找空值。 – 2014-10-11 12:55:54

+1

你能吠叫錯誤的樹嗎?如果測試說你不能使用'strlen',那可能是你不需要在解決方案中使用它的一個指標,而不是一個推出自己的邀請。 – 2014-10-11 13:32:25

回答

-1

嘗試類似這樣的事情。

#include<stdio.h> 

int strlen(const char* temp) 
{ 
    int i=0; 
    while(*(temp++)) ++i; 
    return i; 
} 

int main() 
{ 
    char *text = "Hello World"; 
    printf("%d",strlen(text)); 
    return 1; 
} 
2
size_t my_strlen(const char *s){ 
    const char *p=s; 
    while(*p) 
     ++p; 
    return p-s; 
} 
+0

雖然tecnically perfect,size_t在stddef.h中定義,並可能因此違反指定的要求,只能使用stdio.h – 2014-10-11 13:20:10

+2

@RonPinkas這似乎沒有問題,例如,在諸如'fread'等函數中使用(void * restrict ptr,size_t size,size_t nmemb,FILE * restrict stream);')。 – BLUEPIXY 2014-10-11 13:24:09

+0

確實。感謝您的更正。 :-) – 2014-10-11 13:26:36

-2
unsigned long mystrlen(const char *szString) 
{ 
    unsigned long ulLen = 0; 

    While(szString[0]){ szString++; ulLen++;} 

    return ulLen; 
} 
+0

非常感謝 – chivacalo 2014-10-11 13:19:52