提问人:Ricardo Roel 提问时间:7/14/2023 最后编辑:mkrieger1Ricardo Roel 更新时间:7/14/2023 访问量:40
用 txt info 填充数组
Filling an array with txt info
问:
我需要用 .txt 文件中的信息填充一个数组,我得到了一些东西(是的,代码是西班牙语的,对不起,但我在大学里在拉丁国家编码),我忘记了,为什么 for 和 everyting 在 10 中的原因是因为我的 txt 存储了 10 个名字
#include <stdio.h>
void inicializarNombre (char* nombre) {
for (int i = 0; i < 20; ++i) {
nombre[i] = '\0';
}
}
int main() {
setbuf(stdout, 0);
char *vectoristoNombres[10];
char *vectoristoApellidos[10][20];
FILE *nombres;
nombres = fopen("nombres.txt" , "r");
if(nombres == NULL) {
perror("Error opening file");
return(-1);
}
for (int i = 0; i < 10; ++i) {
vectoristoNombres[i] = "";
}
for (int i = 0; i < 10; i++) {
char caracter;
char nombre[20];
inicializarNombre(nombre);
int index = 0;
while ((caracter = fgetc(nombres)) != EOF) {
if (caracter != '\n') {
nombre[index] = caracter;
index++;
} else {
vectoristoNombres[i] = nombre;
break;
}
}
}
for (int i = 0; i < 10; ++i) {
printf("%s\n", vectoristoNombres[i]);
}
fclose(nombres);
return 0;
}
txt 文件是这样的:
data
secondData
yesMoreData
moreData
问题
该代码读取 .txt 文件并将数据存储在数组中,但是当我存储新的数据输入时,我遇到了一个问题,例如替换以前的数据。
当我在 for 的第二次迭代中时,数组应该vectositoNombres[]
vectositoNombres[0] = "data"
vectositoNombres[1] = "secondData"
但取而代之的是,商店:
vectositoNombres[0] = "secondData"
vectositoNombres[1] = "secondData"
我知道,我已经尝试过了
调试后,我发现当我调用数组时,数组变得空inicializarNombre()
vectorsitonombres[]
例
在第三次迭代中应存储vectorsitoNombres[]
vectositoNombres[0] = "data"
vectositoNombres[1] = "secondData"
vectositoNombres[2] = "yesMoreData"
但它只是存储:
vectositoNombres[0] = "yesMoreData"
vectositoNombres[1] = "yesMoreData"
vectositoNombres[2] = "yesMoreData"
在调用它之后,它转为:inicializarNombre()
vectositoNombres[0] = ""
vectositoNombres[1] = ""
vectositoNombres[2] = ""
答: 暂无答案
评论
vectoristoNombres[i]
nombre
vectoristoNombres
vectoristoNombres[i]
nombre
char nombre[10][20];
nombre[i][index]
vectoristoNombres[i] = nombre[i]
nombre
vectoristoNombres
nombre
inicializarNombre(nombre[i]);
nombre[i]
nombre[i][index] = ‘\0’;