2011-12-28 57 views
0

真正的快速問題,可能是爲什麼我忘記了這樣一個基本的東西!C - 追加到我的數組?

我正在大寫數組中的第一個字母,然後我想追加一個1(從頭到尾) - 我正在爲WPA/2網絡生成單詞列表,作爲我的網絡安全研究的一部分。

所以,制定出字的長度,然後,在該單詞的末尾陣列中的位置,放置一個數字1或2或3

完全忘記你是怎麼做到的雖然!

void capFirst(char *s, int i) { 
s[0] = (toupper(s[0])); 
} 


int main(int argc, char** argv) { 
int i; 
char fileSave[256]; 
char myString[50]; 
FILE *fpIn, *fpOut; 
for(i = 1; i < argc; i++) { 
    fpIn = fopen(argv[i], "rb"); 
    snprintf(fileSave, 256, "%s~[%d]", argv[i], i); 
    fpOut= fopen(fileSave, "wb"); 
    while((fgets(myString, 49, fpIn)) != NULL) { 
     if(isspace(myString[0])) 
      break; 
     i = strlen(myString); 
     if((i > 8) && (i < 64)) { 
      capFirst(myString, i); 
      fprintf(fpOut, "%s", myString); 
     } 
    } 

    } 
    return 0; 
    } 
+0

Something like,s [strlen(s)+ 1] ='x'? – PnP

+3

我不明白你在做什麼。 –

+0

請參閱編輯。 – PnP

回答

2

您需要

i = strlen(string); 
string[i] = whatever you want there; 
string[i+1] = 0; 

但你必須肯定string先後爲0,終止了足夠的空間。

順便說一句,你用i作爲for循環的循環計數器以及該循環內的strlen,通常是一個壞主意。

+0

嗯,它將它添加到單詞的前面:S – PnP

+0

咦?如果'strlen'正常工作,其結果是0-終止符的位置,即字符串的結尾。因此,上述將新角色放在最後。 –