我用C中的指针挣扎。我需要将每行的第一个元素放入数组中。
重要部分:
char shipname[10];
char **shipTable = NULL;
while ( fgets( line,100,myfile) != NULL ) {
sscanf(line, "%s %lf %lf %lf %lf", shipname, &lat, &lng, &dir, &speed);
shipTable = realloc( shipTable, numofShips*sizeof(char*) );
shipTable[numofShips-1]=malloc((10)*sizeof(char));
(shipTable)[numofShips-1] = shipname;
//char *shipname=malloc((10)*sizeof(char));
numofShips++;
}
当我打印出shipTable的每个元素都相同时,我尝试了&和*的每种组合。
最佳答案
您正在为shiptTable的每个元素分配一个指针值,即指向shipname的第一个元素的指针,该元素在内存中的位置永远不变。您实际要做的是每次都复制字符串-例如strcpy(shiptable[numofShips-1], shipname)
。
甚至更好的是,只需在sscanf之前分配内存,并使用shiptable [numofShips-1]作为sscanf中的参数,而不是shipname。