我对C编程(尤其是文件处理)的经验很少。我正在开发一个项目,该项目应该在其中创建一个注册/登录系统。我有一个.csv文件,其中的数据由分隔,
我想做的是分别将第一和第二列读入两个char数组。

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


谁能帮我解决这个问题?谢谢!

最佳答案

“ fscanf()”函数返回已成功填充的参数列表的项目数。因此,请尝试以下操作:

while(fscanf(file3,"%[^,],%s",userLogin,userPassword) == 2)
{
  puts(userLogin);
  puts(userPassword);
}


您提到的问题可能是由于文件末尾的换行符。阅读最后一行时,您尚未到达文件末尾。上面的代码解决了这个问题。

08-06 22:44