【发布时间】:2016-02-08 19:51:07
【问题描述】:
我很难做到这一点!我所做的是让第一行初始化一个指针数组,然后将这些块指向包含文本文档中的字符串的变量。然而;即使当我将所有值读入数组时,它们都指向同一个变量,该变量在读取文件时会发生变化。有没有办法可以将这些值复制到数组中,而不会在读取文件时都指向更改的行?
int main(void){
FILE * fp;
char line[256];
int i = 0;
int digit = 0;
fp = fopen("testfile","r");
if(fp == NULL){
printf("Cannot Open File");
}
fgets(line,sizeof(line),fp);
digit = atoi(line);
printf("digit = %d\n",digit);
char *rest[digit];
while(!feof(fp)){
while (i < digit){
fgets(line,sizeof(line),fp);
fgets(line,sizeof(line),fp);
printf("line = %s",line);
char arr[sizeof(line)+1];
strcpy(arr,line);
rest[i] = arr;
printf("restaurant = %s",rest[i]);
i++;
}
文本文件如下:
6
Outback Steakhouse
Red Robin
Max & Erma’s
Chipotle
Panera
BW3
8
Stephanie 5 3 2 4
Chris 4 6 5 1
Peter 5 2 4 1
Josh 1 4 3 6
Jessica 5 2 3 4
Al 6 4 2 3
Adam 5 1 3 2
Eric 1 4 3 5
【问题讨论】:
-
rest[i] = arr;这只是将数组中的每个条目指向同一个缓冲区。因此,结果当然是每个条目的相同字符串。您需要为每个字符串分配单独的内存缓冲区。 -
为什么你在 while (i
-
逻辑错误很多...我觉得最大的问题是c的知识
-
文本文件的每一行之间都有空格,因此为了跳过空格,我调用了两次。我最初有它,所以如果行的长度