我参与了一个项目,我需要从“csv”文件中读取数据,然后我需要将此信息存储在字符串数组中,以便在存储后搜索、写入、删除和添加信息。我从“csv”文件处理的字段是:
身份证、姓名、金额:
1234 马里奥 $100
3245 弗朗西斯科 $15.50
4356 Jorge $0.00
4321 Pablo $0.00
2346 Rene $0.00
8795 Sofia $233.20
3569
Sandra $0.00
8907 Andrea $0.00
6890 Maru $0.00
4563 安娜 $ 0.02 $0.02
最终 678.
问题是当我创建字符串数组时,总是在索引指向的当前单元格中写入(什么是正确的)但也覆盖以前的单元格(什么是不正确的),例如:
步骤 0:
cell0:1234 马里奥 $100
step1:单元格0:3245
弗朗西斯科 $15.50
单元格1:3245 弗朗西斯科 $15.50
步骤 3:细胞 0:4356 豪尔赫 0.00 美元 细胞 1:4356 豪尔赫 0.00 美元细胞
2
:4356 豪尔赫 0.00 美元
等等...
正如您最后可以推断的那样,我拥有所有字符串数组的单元格以及最后的信息,6789 Noemi 23.12 美元,但没有正确的信息。代码是:
#include <SD.h>
//Ajustes SPI
//MOSI, MISO, SCLK estan predeterminados
int CS_pin=8;
char in_char=0;
String datosSD="";
int x=0;
char myStrings[60];
char* arrayStrings[13];
void setup()
{
Serial.begin(9600); //Se inicializa velocidad de comunicación serial
Serial.println("Inicializando microSD");
pinMode(CS_pin,OUTPUT); //Se configura Pin CS (8) como salida
//Se verifica si la tarjeta esta lista
if(!SD.begin(CS_pin))
{
Serial.println("Fallo microSD");
return;
}
Serial.println("miscroSD lista");
//Se abre un archivo para escribir en el
//Solo un archivo se puede abrir a la vez
File datoArchivo=SD.open("TEST.csv");
in_char=datoArchivo.read();
//Se verifica si la apertura del archivo tuvo éxito para poder escribir en el archivo
if(datoArchivo)
{
while(datoArchivo.available())
{
if(in_char!='\n')
{
datosSD.concat(in_char);
in_char = datoArchivo.read();
}
else
{
Serial.println(datosSD);
datosSD.toCharArray(myStrings, 60);
arrayStrings[x]=myStrings;
x++;
in_char = datoArchivo.read();
datosSD="";
}
}
datoArchivo.close();
}
else
{
Serial.println("No se pudo Accesar al Archivo");
}
/////////// Show the information of Array of Strings /////////////////
for (int i = 0; i < 13; i++)
{
Serial.println(arrayStrings[i]);
delay(100);
}
//////////////////////////////////////////////////////////////////////
}
void loop()
{
}
先感谢您