我在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;。
当我运行此代码时,不附加该字母。整个代码中的字符串保持不变,这当然会导致它中断。有没有正确的方法来做到这一点?
答案 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