C - 读取字符数组中的 CSV 文件
C - Reading CSV file in char array
我在 C 编程方面的经验很少,尤其是文件处理。我正在开发一个项目,我应该在其中创建一个 Sign Up/Log In 系统。我有一个 .csv 文件,其中的数据由 ,
我要做的是分别将第一列和第二列读入两个字符数组。
char userLogin[100];
char userPassword[100];
FILE *file3 = fopen("C:\Users\Kshitiz\Desktop\BAAS\signup_db.csv","r");
if(file3 != NULL){
while(!feof(file3)){
fscanf(file3,"%[^,],%s",userLogin,userPassword);
puts(userLogin);
puts(userPassword);
}
}
fclose(file3);
signup_db.csv的内容:
Username,Password
SBI063DDN,Qazwsx1234
ICICIDDN456,WSXEDC1234r
预期输出:
Username
Password
SBI063DDN
Qazwsx1234
ICICIDDN456
WSXEDC1234r
我得到的输出:
Username
Password
SBI063DDN
Qazwsx1234
ICICIDDN456
WSXEDC1234r
WSXEDC1234r
谁能帮我解决这个问题?谢谢!
在我的例子中,我得到了预期的结果,但我不知道编译器是否存在差异,或者我的 csv 文件是否不同(我已尝试重新创建它)。这是另一种解析文件的方法,检查是否有预期的结果:
#include <stdio.h>
#include <string.h>
#define LINE_LENGTH 1000
int main(void) {
char userLogin[100];
char userPassword[100];
char line[LINE_LENGTH];
char *delimiter = ",";
char *token;
FILE *file3 = fopen("signup_db.csv", "r");
while(fgets(line, LINE_LENGTH, file3) != NULL) {
token = strtok(line, delimiter);
printf("%s\n", token);
token = strtok(NULL, delimiter);
printf("%s\n", token);
}
fclose(file3);
}
'fscanf()'函数returns成功填充参数列表的项目数。所以试试这个:
while(fscanf(file3,"%[^,],%s",userLogin,userPassword) == 2)
{
puts(userLogin);
puts(userPassword);
}
您提到的问题可能是由于文件末尾的换行符引起的。当您阅读最后一行时,您还没有到达文件末尾。上面的代码解决了这个问题。
我在 C 编程方面的经验很少,尤其是文件处理。我正在开发一个项目,我应该在其中创建一个 Sign Up/Log In 系统。我有一个 .csv 文件,其中的数据由 , 我要做的是分别将第一列和第二列读入两个字符数组。
char userLogin[100];
char userPassword[100];
FILE *file3 = fopen("C:\Users\Kshitiz\Desktop\BAAS\signup_db.csv","r");
if(file3 != NULL){
while(!feof(file3)){
fscanf(file3,"%[^,],%s",userLogin,userPassword);
puts(userLogin);
puts(userPassword);
}
}
fclose(file3);
signup_db.csv的内容:
Username,Password
SBI063DDN,Qazwsx1234
ICICIDDN456,WSXEDC1234r
预期输出:
Username
Password
SBI063DDN
Qazwsx1234
ICICIDDN456
WSXEDC1234r
我得到的输出:
Username
Password
SBI063DDN
Qazwsx1234
ICICIDDN456
WSXEDC1234r
WSXEDC1234r
谁能帮我解决这个问题?谢谢!
在我的例子中,我得到了预期的结果,但我不知道编译器是否存在差异,或者我的 csv 文件是否不同(我已尝试重新创建它)。这是另一种解析文件的方法,检查是否有预期的结果:
#include <stdio.h>
#include <string.h>
#define LINE_LENGTH 1000
int main(void) {
char userLogin[100];
char userPassword[100];
char line[LINE_LENGTH];
char *delimiter = ",";
char *token;
FILE *file3 = fopen("signup_db.csv", "r");
while(fgets(line, LINE_LENGTH, file3) != NULL) {
token = strtok(line, delimiter);
printf("%s\n", token);
token = strtok(NULL, delimiter);
printf("%s\n", token);
}
fclose(file3);
}
'fscanf()'函数returns成功填充参数列表的项目数。所以试试这个:
while(fscanf(file3,"%[^,],%s",userLogin,userPassword) == 2)
{
puts(userLogin);
puts(userPassword);
}
您提到的问题可能是由于文件末尾的换行符引起的。当您阅读最后一行时,您还没有到达文件末尾。上面的代码解决了这个问题。