char **rhyme; // init my double pointer
rhyme=inputrhyme(); // calls below function to input the rhyme
char** inputrhyme(){
char **rhyme, *temp, *token, BUFF[300], s[2]=" ";
int length=0;
rhyme=malloc(length * sizeof(char*));
printf("please enter a rhyme: \n");
scanf(" %[^\n]",BUFF);
token = strtok(BUFF, s);
while(token != NULL)
{
length++;
temp=realloc(rhyme, length* sizeof(char*));
if (temp==NULL){
printf("fatal error!\n");
exit(EXIT_FAILURE);
}
rhyme=temp;
rhyme[length-1]=token;
token = strtok(NULL, s);
}
length++;
temp=realloc(rhyme, length* sizeof(char*));
if (temp==NULL){
printf("fatal error!\n");
exit(EXIT_FAILURE);
}
rhyme=temp;
rhyme[length-1]=NULL;
return rhyme;
}
firstNode=sayRhyme(rhyme, firstNode); // goes through the rhyme saying each word
NodePtr sayRhyme(char **rhyme, NodePtr starting_player){
int index;
NodePtr temp=starting_player;
printf(" %s\n", rhyme[6]); // works fine for all valid values
for (index=0; index<9; index++){
printf("---------%d %s\n",index, rhyme[index]); // problem area
}
это почти весь код, который включает в себя эту рифму. когда я передаю свой двойной указатель на мою функцию, мне нужно только прочитать его, чтобы я не передал указатель на него. я могу прочитать любое значение в рифме, но когда я пытаюсь передать его через цикл, данные будут искажены каким-то образом. это результат, который я получаю:Двойной указатель, который передается, повреждается во время циклов?
please enter a rhyme:
help im stuck in a computer for real now *user input*
help
im
stuck
in
a
computer
for
real
now
first word was help
for
---------0 help
---------1 im
---------2 stuc$
---------3
---------4
▓
---------5
---------6 for
---------7 ▄²(
---------8 ≥7vÅ≥7vδ╛ΣW
player 0 is eliminated
Я не уверен, что я здесь делаю неправильно. Я попытался передать двойной указатель в виде тройки и почитать его с теми же результатами.
oh, что делает состояние. Я думал, что это было так, как я пропускал двойной указатель. Могу ли я использовать strcpy для копирования поверх строки? –
Вы можете использовать strcpy (хотя strncpy безопаснее), но вам все равно нужно выделить некоторую память для использования в качестве места назначения копии. –
Гоша, что-то еще, я уронил мяч. Забыл malloc за каждое слово ..... Большое спасибо! –