能检查到的错误类型:
1:连续两个逗号;
2:最后一个字符为逗号;
3:列数不一致;
4:某行为空。
bool checkCsvFormat(const char * csvFileName)
{
fstream fin(csvFileName,ios::in);
char str[500];
int colNum=0,nextColNum=0,line=0;
while(fin.getline(str,500))
{
line++;
string temp=str;
int len=temp.length();
if(""==temp)//空行
{
printf("The line %d is empty!",line);
return false;
}
if(','==temp[0])//第一个字符为逗号
{
printf("The first char is \",\"at the line %d!",line);
return false;
}
if(','==temp[len-1])//最后一个字符为逗号
{
printf("The last char is \",\"at the line %d!",line);
return false;
}
int num=0;
for(int i=1;i<len-1;i++)
{
if(','==temp[i])//连续两个逗号
{
if(','==temp[i+1])
{
printf("There are two \",\"continuously at the line %d!",line);
return false;
}
else
{
num++;
}
}
}
if(1==line)
{
colNum=num;
}
else
{
nextColNum=num;
}
if(line>=2)
{
if(nextColNum!=colNum)//列数不等
{
printf("The number of columns at the line %d is different from before it!",line);
//printf("column =%d,nextColNum=%d",colNum ,nextColNum);
return false;
}
}
}
fin.close();
return true;
}