Olá pessoal. Estou com dúvida com um programa que preciso fazer para a disciplina de SO (uso de threads e tal). Estou desenvolvendo um caça palavras em C. Eis meu problema:
Tenho um arquivo que contém 16 linhas com 60 letras em cada linha. Preciso localizar uma palavra no arquivo e torná-la maiúscula, e então mandar para um arquivo de saída a mesma matriz com as palavras alteradas.
A manipulação das letras/ palavras é feita em uma matriz. O erro acontece justamente na função que deveria alocar a matriz. Esta função, chamada geraMatriz, possui uma variavel local chamada char** matriz. Aloco essa matriz desta forma:
matriz = (char**)malloc(sizeof(char *));
A matriz é então alocada. Depois, dentro de um for, leio cada linha do arquivo numa variável char frase[100], através do comando fgets. Funciona também. Neste mesmo for, faço o seguinte comando:
*(matriz+ contador) = frase
É aqui que começa o problema.
Quando imprimo cada frase apontada por *(matriz + contador), no método geraMatriz, tudo aparece normal. Mas esta função me retorna a matriz (a declaração da função é char** geraMatriz). Recebo a matriz resultante, no método main, através de uma variável chamada M, também do tipo char**. Quando tento imprimir o conteúdo da matriz M (o que é apontado por M), usando um laço de repetição do mesmo tipo utilizado na alocação da variável matriz, surge um erro.
Alguém poderia me esclarecer o que ocorre? Já tentei tornar M uma variável do tipo char*** mas continua dando erro.
Pergunta
Guest --renatoes --
Olá pessoal. Estou com dúvida com um programa que preciso fazer para a disciplina de SO (uso de threads e tal). Estou desenvolvendo um caça palavras em C. Eis meu problema:
Tenho um arquivo que contém 16 linhas com 60 letras em cada linha. Preciso localizar uma palavra no arquivo e torná-la maiúscula, e então mandar para um arquivo de saída a mesma matriz com as palavras alteradas.
A manipulação das letras/ palavras é feita em uma matriz. O erro acontece justamente na função que deveria alocar a matriz. Esta função, chamada geraMatriz, possui uma variavel local chamada char** matriz. Aloco essa matriz desta forma:
A matriz é então alocada. Depois, dentro de um for, leio cada linha do arquivo numa variável char frase[100], através do comando fgets. Funciona também. Neste mesmo for, faço o seguinte comando:É aqui que começa o problema.
Quando imprimo cada frase apontada por *(matriz + contador), no método geraMatriz, tudo aparece normal. Mas esta função me retorna a matriz (a declaração da função é char** geraMatriz). Recebo a matriz resultante, no método main, através de uma variável chamada M, também do tipo char**. Quando tento imprimir o conteúdo da matriz M (o que é apontado por M), usando um laço de repetição do mesmo tipo utilizado na alocação da variável matriz, surge um erro.
Alguém poderia me esclarecer o que ocorre? Já tentei tornar M uma variável do tipo char*** mas continua dando erro.
Agradeço pela ajuda.
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.