我有一个从文本文件中读取字符串的函数,并将它们存储在一个最大为1000行和81列(80个有用字符和 \0
)的二维数组中 .
在将其插入数组之前,如何在该文本文件的单行中引入检测器中有多少个字符?
因为练习说文本文件每行最多只能包含80个字符(有用),但我现在的功能是,如果它超过80,它只是将字符串读取到数组的下一行 . 如何使它如果文本文件中的行在 \n
之前有超过79个字符,它会返回错误消息?
这是我现在读取文件的函数:
int lerficheiro(char texto[MAXLINHAS][MAXCARPORLINHA])
{
FILE * fp;
fp = fopen("tudomaiusculas.txt", "r");
if(fp==NULL)
{
printf("Erro ao abrir o ficheiro.");
return (-1);
}
while(!feof(fp))
{
for(int linha = 0; linha < MAXLINHAS; linha++)
{
fgets(texto[linha], MAXCARPORLINHA, fp);
}
}
fclose(fp);
for(int linha = 0; linha < MAXLINHAS; linha++)
{
for(int coluna = 0; coluna < MAXCARPORLINHA; coluna++)
{
if(texto[linha][coluna] >= 97 && texto[linha][coluna] <= 122)
{
printf("O ficheiro contem letras minusculas, a terminar.");
return (-1);
}
}
}
return (1);
}
2 回答
假设MAXCARPORLINHA为80个字符为82,另外一个用于换行,一个用于终止零 .
使用
strchr
来测试换行符 . 如果未找到,请继续阅读,直到找到换行符并设置标记 .你可以添加一个计数器,每次它将一个字符复制到文件,在fgets下递增1,然后添加一个if语句来打印错误