0

目的: .txt ファイルに変換する簡単なコードを作成します。

すべての「I」、「E」、「A」、「S」、および「O」は、それぞれ「1」、「3」、「4」、「5」、および「0」になります。

最初は非常にシンプルに作成しましたが、複数行のテキストを処理できませんでした。そこでフレーズとセリフをマトリックスとして扱ってみたのですが、うまくいきません。コードは次のとおりです。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *arquivo;
    char frase[100][100];
    int i = 0;
    int j = 0;

//adress of the initial text file
arquivo = fopen("C:\\Users\\xand\\Desktop\\ex1.txt", "r");

    //transfering every line of the file into a matrix
    while (!feof(arquivo))
    {
       fgets(frase[100][i],100, arquivo);
       i++;
    }

    fclose(arquivo);

//converting the letters to numbers
for(j = 0; j < 100; j++)
{
    while(frase[i][j] != '\0')
    {
        if(frase[i][j] == 'i' || frase[i][j] == 'I')
        {
            frase[i][j] = '1';
        }
        if(frase[i][j] == 'e' || frase[i][j] == 'E')
        {
            frase[i][j] = '3';
        }
        if(frase[i][j] == 'a' || frase[i][j] == 'A')
        {
            frase[i][j] = '4';
        }
        if(frase[i][j] == 's' || frase[i][j] == 'S')
        {
            frase[i][j] = '5';
        }
        if(frase[i][j] == 'o' || frase[i][j] == 'O')
        {
            frase[i][j] = '0';
        }

    i++;
    }
}

    arquivo = fopen("ex1 criptografado.txt", "w");

//here is where I believe to be the problem
//It doesn't even create the new file. Im not sure if using matrix is the ideal solution to fprintf a multi-lined text to a file
for(j = 0; j < 100; j++)
{
    i = 0;
    while(frase[i][j] != '\0')
    {
        fprintf(arquivo, "%s", frase[i][j]);
        i++;
    }

    fprintf(arquivo, "\n");
}

    fclose(arquivo);



    return 0;
}

コードはコンパイルされますが、実行しようとするとクラッシュします。誰でもこれの解決策を手伝ってもらえますか?

4

2 に答える 2