Я пытаюсь запустить эту программу, которая читает ввод типа str:int:int:int
, а затем разбивает значения на соответствующие массивы. Проблема в том, что строковая часть постоянно заменяется при каждом запуске функции. Это мой код:
int main(){
char *str[100];
int stock[100][3],idp=0;
while(idp<100){
fgets(data,80,stdin);
str[idp]=strtok(data,":");
stock[idp][0]=atoi(strtok(NULL,":"));
stock[idp][1]=atoi(strtok(NULL,":"));
stock[idp][2]=atoi(strtok(NULL,":"));
idp++;
}
return 0;
}
После выполнения цикла while()
3 раза с входами abc:3:4:5
abcde:1:5:6
def:5:6:7
я получаю следующие значения:
str[0]=def stock[0][0]=3 stock[0][1]=4 stock[0][2]=5
str[1]=def stock[1][0]=1 stock[1][1]=5 stock[1][2]=6
str[2]=def stock[2][0]=5 stock[2][1]=6 stock[2][2]=7
Как видите, пока значения массива stock[][]
сохраняются правильно, все предыдущие строки в массиве str[]
заменяются. Я хотел бы знать, как остановить это. Заранее спасибо.