2012-02-16 84 views
0

我目前正在從頭開始編寫strstr。在我的代碼中,我編制了一個字符串的索引,並且最終我需要使用另一個指針保存字符串上的特定點。這裏是我正在努力的代碼部分:指向索引指針

char *save_str; 
for(int i=0;i<length_str1; i++) 
{ 
    if(str1[i]==str2[0]) 
    { 
     *save_str=str[i]; 

但是,它告訴我,我不能這樣做。我怎樣纔能有一個指向特定字符的指針?

+0

編譯器給出的錯誤信息是什麼? – 2012-02-16 22:52:49

+0

這是一個功課練習嗎? – 2012-02-16 22:53:57

+0

在處理這樣的事情之前,你應該確保你理解指針和事物指針之間的區別。 '* save_str'在你的上下文中沒有意義。 – 2012-02-16 23:06:52

回答

0

快速實用的答案

save_str = &str[i]; 

擴展描述鏜回答

還有一個特點,在 「純C」和關於數組和指針的「C++」。

當程序員想要地址全陣列,或者第一個項目的,在「&」操作不是必需的,甚至認爲一些編譯器錯誤或警告。

char *myptr = NULL; 
char myarray[512]; 

strcpy(myarray, "Hello World"); 

// this is the same: 
myptr = myarray; 

// this is the same: 
myptr = &myarray[0]; 

當程序員想要地址特定項目的,那麼「&」要求操作:

save_str = &str[i]; 

我讀的地方,即,加入這些功能,在purpouse。

許多開發人員避免這種情況,並使用指針算術,而是:

... 

char *save_str; 
... 

// "&" not required 
char *auxptr = str1; 

for(int i=0; i < length_str1; i++) 
{ 
    // compare contents of pointer, not pointer, itself 
    if(*auxptr == str2[0]) 
    { 
     *save_str = *auxptr; 
    } 

    // move pointer to next consecutive location 
    auxptr++; 
} 

... 

就個人而言,我希望,「&」應該是使用始終,並避免混淆。 乾杯。

+0

非常有幫助..謝謝:) – 2012-02-17 01:37:41

1

您可以從以下兩種方法可供選擇:

save_str = &str[i]; 

or 

save_str = str+i;