2009-12-03 22 views
-4

繼承人我做了什麼,我只是有ne錯誤,我無法弄清楚。編寫一個函數int mystrlen(char * s),它返回字符串中的字符數wuthout strlen func

int mystrlen(char string[]) 
{ 
char string1[LENGHT], string2[LENGHT]; 
int len1, len2; 
char newstring[LENGHT*2]; 

printf("enter first string:\n"); 
len1 = mystrlen(string1); 
printf("enter second string:\n"); 
len2 = mystrlen(string2); 

if(len1 == EOF || len2 == EOF) 
    exit(1); 

strcpy(newstring, string1); 
strcat(newstring, string2); 

printf("%s\n", newstring); 

return 0; 
+0

@henry:您可以在問題編輯器中使用代碼按鈕(101010)來設置代碼的格式。發佈時請注意這一點。 – Naveen 2009-12-03 07:10:38

+0

你錯過了一個閉幕} – FlySwat 2009-12-03 07:11:37

+0

另外,你正在從mystrlen調用mystrlen。由於無限累加,這將導致StackOverflow。 – Naveen 2009-12-03 07:14:08

回答

0

您遞歸調用所有分支上的相同函數。它不會工作 - 該計劃將導致堆棧溢出,並最有可能崩潰大時間。

你需要以某種方式結構中的程序是這樣的:

int mystrlen(char string[]) 
{ 
    //compute length here 
} 

void testStuff() 
{ 
    //your code here 
} 
0

嘗試使用Pseudocode程序讀取 - 它可能會更容易理解呢:)

  1. 聲明變量字符串1,字符串,len1,len2,newstring
  2. 打印信息
  3. 3轉至1
    3.1。聲明變量string1,string2,len1,len2,newstring
    3.2。打印信息
    3.3。轉到3.1
    ... 3.3.1聲明變量字符串1,字符串,LEN1,LEN2,newstring
    ... 3.3.2 .....

您看到錯誤? :)

2

作弊,而是遵循你的規則...

int mystrlen(char *s) 
{ 
    return strchr(s, '\0') - s; 
} 
0

要拿出一個解決問題的方法,你必須明白,在C「串」是終止字符數組「 \ 0' 。這應該足以幫助您通過適當的解決方案進行工作。

0
int mystrlen(char string[]) 
{ 
    int i = 0; 
    while(string[i] != '\0'){ 
     ++i; 
    } 
    return i; 
} 
相關問題