2012-11-04 33 views
0

嗨,閱讀串過ARGS

我試圖通過ARGS []讀取一個字符串轉換成我的代碼 - 參數,就像我會用Java做的。 所以基本上,這就是我想做的事:

- read the String "machine" over launch-parameter 
- go through every letter of that string in a loop 
- while in the loop, check is current letter equals "e" 
- if letter equals "e", replace it with "a" 
- return edited string 

這是爲了句話最好的辦法我到C元素問題,這樣我會很高興,如果你不會把這個帖子攻勢。

我該如何實現該代碼?

+0

請問,你到目前爲止試過了什麼? – alk

回答

-1

在這裏你去:

void replace_e_with_a(char * str) 
{ 
    int i; 
    if (!str) 
     return; 
    for (i = 0; str[i]; i++) { 
     if (str[i] == 'e') 
      str[i] = 'a'; 
    } 
} 

沒雖然編譯。

+0

我知道'*'代表指針。但我不太明白你的意思。 – QKL

+0

C中沒有這樣的「字符串」。有「字符數組」,它是「char *」。你在問什麼?你至少需要知道C中的「數組」和「指針」以理解答案。 – kliteyn

+0

我在問'char * str'中'*'符號的含義。據我所知,例如,數組被寫爲'char a []'。 – QKL

0

這是應該工作的東西。

#include <stdio.h> 

void replace_e_with_a(char * str) 
{ 
    int i; 
    if (NULL != str) 
     while ('\0' != *str) { 
      if (*str == 'e') 
       *str = 'a'; 
      ++str; 
     } 
} 

int main(int argc, char **argv){ 
    int i; 
    for (i = 1; i < argc; ++i) { 
    replace_e_with_a(argv[i]); 
    puts(argv[i]); 
    } 
} 
+0

你能解釋一下'*'在這段代碼中做什麼嗎?這是我從未在編程中看到過的東西。 – QKL

+0

當然,這被稱爲指針取消引用操作符,並且您可以得到一個很好的解釋[there](http://cslibrary.stanford.edu/106/)。在Pascal(或Delphi)中有一個等價的運算符:''''後綴運算符。 – didierc

+1

你的意思是(while(* str))?你將永遠不會通過增加str命中內存地址0x0,但是當你點擊一個''\ 0''時你想停止。 –

1

下面是(幾乎)不涉及指針,但你應該瞭解的指針,如果你打算做甚至適度先進的C語言編程的解決方案。

void replace_e_with_a(char str[]) 
{ 
    int i, len = strlen(str); 
    for (i=0; i<len; i++) { 
     if (str[i] == e) str[i] = a; 
    } 
} 

int main(int argc, char *argv[]){ 
    int i; 
    for (i = 1; i < argc; i++) { 
    replace_e_with_a(argv[i]); 
    puts(argv[i]); 
    } 
} 
+0

不要忘記'#include'! – didierc