2011-12-28 28 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-终止符的位置,即字符串的结尾。因此,上述将新角色放在最后。 –