【发布时间】:2017-10-11 03:07:29
【问题描述】:
我最近开始处理文件,但遇到了错误。我有一个.txt。包含以下字符串的文件:
a|10
b|5
我的问题是当我读取空白行时,即使我在代码中有条件,它也会以某种方式崩溃。调试时,我可以看到该行收到一个“\n”,但程序在这种情况下无法识别它并且它崩溃了。
void delete_prod(void)
{
FILE *pfile;
char line[21];
char *buffer;
char *ptr;
char produto_nome[21];
char produto_quantidade[21];
char quantidade_nova[21];
char teste[21];
char barra_linha[]="\n";
buffer = (char *) malloc(1000*sizeof(char));
memset(buffer, 0, 1000*sizeof(char));
ptr = buffer;
printf("material:");
scanf("%s",teste);
pfile = fopen("registos.txt", "r");
while(!feof(pfile))
{
int i=0;
for(i; i<21;i++)
{
line[i] = 0;
}
fgets(line, 21, pfile);
if(line != NULL || line != "\n")
{
strcpy(produto_nome, strtok(line ,"|"));
strcpy(produto_quantidade, strtok(NULL, "|"));
if((strcmp(produto_nome,teste) == 0))
{
//DO THE REST OF THE WORK HERE
printf("HERE");
}
else
{
printf("ERROR");
}
}
}
fclose(pfile);
}
一直在这里研究,但没有找到任何可以解决我问题的东西。 在此先感谢,我希望我清楚地解释了这个问题。
【问题讨论】:
-
line != NULL总是为真。使用if (fgets(line, sizeof line, pfile) && line[0] != '\n') {。 -
是的,这是我的问题之一。谢谢!!