Текстовый файл в 2D строку - PullRequest
0 голосов
/ 10 апреля 2020

Пожалуйста, вы можете помочь мне с моим кодом? Я хочу преобразовать мой текстовый файл в 2D строку строка за строкой. Я пробовал некоторые условия, но это не сработало.


m - количество строк

n - количество столбцов


Это моя функция:

int convert_text_file_into_2Dstring(int m, int n)
{   
    int i, j;
    int **string= (char **)malloc(m * sizeof(char *));
    for (i=0; i<n; i++)
         string[i] = (char *)malloc(n * sizeof(int));
    for(i=0; i<n; i++){
        for(j=0; j< m){
            ...
        }
    }
}

1 Ответ

0 голосов
/ 10 апреля 2020

Как насчет хорошей функции C99:

int convert_text_file_into_2Dstring(int m, int n)
{
    int i, j;
    int string[m][n];
    for(i=0; i<n; i++)
    {
        for(j=0; j< m ; j++)
        {
            //...
        }
    }
}

Так что вам не нужно mallo c, и вам придется освобождаться позже.

Если вы не можете использовать эту функцию, потому что компилятор не поддерживает ее, вы должны освободить выделенную память:

int i, j;
int **string= (int **)malloc(m * sizeof(char *));

for (i=0; i<n; i++)
    string[i] = (int *)malloc(n * sizeof(int));

for(i=0; i<n; i++)
{
    for(j=0; j< m ; j++)
    {
        //...
    }
}

for (i=0; i<n; i++)
    free(string[i]);

free(string);

теперь вы можете установить во внутреннюю l oop примерно так:

string[j][i] = text[i];

Немного удобнее было бы использовать strcpy:

int convert_text_file_into_2Dstring(int m, int n)
{
    int i, j;
    int string[m][n];
    for(j=0; j< m ; j++)
    {
       strncpy(string[j],text,n);
    }
}
...