如何将字符附加到字符串上?

时间:2016-02-07 21:17:46

标签: c string string-concatenation

我在Stack Overflow上看到的例子接近于我的问题,但它们似乎都不匹配,所以我不得不问自己:我怎样才能在C中的字符串中正确附加一个字符?我知道strcat()不能完成这项工作,使用数组值也不能正常工作。这是我的代码:

char* buildWord(int posX, int posY, int nextX, int nextY, int gridX, int gridY, char** grid, char* str, int length){
    int len2;
    char* word = malloc(sizeof(char) * 20);

    if(posX+nextX < 0 || posX+nextX > gridX)
        return NULL;
    if(posY+nextY < 0 || posY+nextY > gridX)
        return NULL;

    strcpy(word, str);
    len2 = strlen(word);
    word[len2 + 1] = grid[posX + nextX][posY + nextY];    //grid[x][y] represents a 
    word[len2 + 2] = '\0';                                //single character
    printf("%s", word);

    length++;

    if(length < 4)
        word = buildWord(posX+nextX, posY+nextY, nextX, nextY, gridX, gridY, grid, word, length);

    return word;
}

正如您可能猜到的,此代码的目的是从一个字母网格构建一个字符串,并考虑到特定的方向(类似于wordsearch)。例如,如果我的初始字符串&#34; str&#34;是&#34; c&#34;并且我正朝着对角线方向前进,下一个字母是&#34; a&#34;,我想要放在一起的字符串是&#34; ca&#34;。

当我运行此代码时,不附加该字母。整个代码中的字符串保持不变,这当然会导致它中断。有没有正确的方法来做到这一点?

1 个答案:

答案 0 :(得分:3)

你有一个错误:

word[len2 + 1] = grid[posX + nextX][posY + nextY];    //grid[x][y] represents a 
word[len2 + 2] = '\0';

应该是:

word[len2] = grid[posX + nextX][posY + nextY];    //grid[x][y] represents a 
word[len2 + 1] = '\0';

请记住,索引以0

开头