首页 文章

如何在文本文件为空时停止读取它们

提问于
浏览
-1

所以,我使用fgets将文本文件中的字符串转换为数组的不同行,每个字符串都是一行 . 但毕竟,当我运行程序然后将输出写入另一个文本文件时,它写出有用的字符串都是正确的,但是在最后一个之后,因为我必须使用数组行的定义,值为1000,它打印垃圾,随机字符 . 我尝试使用一个int来读取它从第一个文本文件中读取的有用字符串但是没有用 . 还尝试使用if(array [line] =='\ 0')break;没用 . 如何使它在最后一个有用的字符串之后停止fprintf?谢谢,这是我必须编写的代码并加密我的字符串 .

void cifrar(char texto[MAXLINHAS][MAXCARPORLINHA], unsigned int cifra)
{
    for(int linha = 0; linha < MAXLINHAS; linha++)
    {   
        for(int coluna = 0; coluna < strlen(texto[linha]); coluna++)
        {
            if(texto[linha][coluna] < 'A' || texto[linha][coluna] > 'Z') continue;
            else texto[linha][coluna] = texto[linha][coluna] + cifra;
            if(texto[linha][coluna] > 'Z') texto[linha][coluna] = texto[linha][coluna] - 26;
        }
    }
}

int escreverficheiro(char texto[MAXLINHAS][MAXCARPORLINHA])
{
    FILE * fp;
    fp = fopen("cifrado.txt", "w");
    if(fp==NULL)
    {
        printf("Erro ao escrever ficheiro.");
        return (-1);
    }
    for(int linha = 0; linha < MAXLINHAS; linha++)
    {
        if(texto[linha] == NULL) break;
        fprintf(fp, "%s", texto[linha]);
    }

    fclose(fp);
    return (1);
}

2 回答

  • -1

    这可能不对,但我会尝试 if(array[line] == EOF) break; .

  • 0

    你有一个 2-dimensional array ,而不是一个指向字符串的指针数组 . (实际上,在函数中你有一个指向 char[MAXCARPORLINHA] 的指针,但指向一个2D数组) .

    texto[linha]
    

    1-dimensional array of characters . 除了 sizeof_Alignof& 的操作数外,数组将转换为指向第一个元素的指针 .

    并且由于数组是现有对象,因此根据定义,其地址不能为NULL .


    执行所需操作的最简单方法是将行数作为 size_t 类型的参数传递给函数,而不是尝试使用任何"sentinel"值 .

    int escreverficheiro(size_t n, char texto[][MAXCARPORLINHA])
    

相关问题