我知道我可以这样初始化一个字符串数组:
static const char *BIN_ELEMENTS[5] = {
"0000\0", // 0
"0001\0", // 1
"0010\0", // 2
"0011\0", // 3
"0100\0", // 4
};
但我需要以一种动态的方式来实现这一点。从文件中读取字符,并将它们插入到数组中。然后将该数组复制到字符串数组中(如上所示)。
因此,假设我从文件中捕获了以下字符,并将它们插入到数组中,如下所示:
char number[5];
char *listOfNumbers[10];
number[0]='1';
number[1]='2';
number[2]='3';
number[3]='4';
number[4]='\0';
现在我想将数字的全部内容复制到listOfNumers[0]
// 这意味着我已经将“1234”存储在 listOfNumers 的位置 0 中。剩下9个位置来存储不同的数字。
所以我会做这样的事情:
listOfNumers[0] = number; //this actually seems to work.
但由于它是一个巨大的数字文件,我需要重用数组数字来提取一个新数字。但是当我这样做时,之前存储在 listOfNumers[0] 中的内容会被覆盖,即使我更新了新号码的新位置。我该如何处理?
这是我到目前为止所拥有的:
char number[5]; // array for storing number
int j=0; // counter
int c; // used to read char from file.
int k=0; // 2nd counter
char*listOfNumbers[10]; // array with all the extracted numbers.
FILE *infile;
infile = fopen("prueba.txt", "r");
if (infile) {
while ((c = getc(infile)) != EOF) {
if(c != ' ' && c != '\n')
number[k] = c;
++k;
} // end inner if
else {
number[k] = '\0';
listOfNumbers[j] = number;
printf("Element %d is: %s\n", j, listOfNumbers[j]); // prints correct value
++j;
k=0;
} // end else
} // end while
fclose(infile);
} // end outer if
printf("\nElement 0 is: %s\n", listOfNumbers[0]); // fails - incorrect value
printf("Element 1 is: %s\n", listOfNumbers[1]); // fails - incorrect value
printf("Element 2 is: %s\n", listOfNumbers[2]);