Ir ao conteúdo
  • Cadastre-se

AJUDA:Le arquivo e guarda numa matriz 9x9


hotmiyuki

Posts recomendados

Olá!

Alguem sabe no que eu estou errando?

ele retorna 10-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1...

grato!

jogada.sdk


000000000000000218178236549513762894867459321492381675756198432281643957349527186

main.c


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

int main(){
char *str1="./jogada.sdk";
FILE *fp=0;
int i,j;
int x=0;
int S[9][9];
//Le o arquivo com a jogada e grava na matriz +++++
fp=fopen (str1,"r");
if (!fp){
printf("Arquivo jogada.sdk inexistente!\n");
}
else{
x=getc(fp);
while(!feof(fp)){
for(i=0;i<9;i++){
for(j=0;j<9;j++){
S[i][j]=x;
x=getc(fp);
}
}
}
}
fclose(fp);
//-----
//imprime+++++
for(i=0;i<9;i++){
for(j=0;j<9;j++){
printf("%d",S[i][j]);
}
}
//-----
return 0;
}

Link para o comentário
Compartilhar em outros sites

Você tem 81 posições na matriz... mas o programa tá lendo até a 82 no arquivo.

Por causa disso aqueles dois FORs estão sendo repetidos uma vez.


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

int main(){
char *str1="teste.txt";
FILE *fp=0;
int i,j;
int x=0;
int S[9][9];
//Le o arquivo com a jogada e grava na matriz +++++
fp=fopen (str1,"r");
if (!fp){
printf("Arquivo jogada.sdk inexistente!\n");
}
else {

for(i=0; i<9; i++)
for(j=0; j<9 && !feof(fp); j++) {
x = getc(fp);
S[i][j] = x;
}

}
fclose(fp);

//imprime+++++
for (i=0; i<9; i++){
for (j=0; j<9; j++){
printf("%c", S[i][j]);
}
}

return 0;
}

Link para o comentário
Compartilhar em outros sites

A matriz é de int, e não de char.

Precisa fazer a conversão no momento da inserção.

E o "fclose" precisa ficar dentro do else, pois é lá que confirma que o arquivo abriu com sucesso.


else
{
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if ( feof(fp) == 0 )
{
S[i][j] = getc(fp) - 48; // diminuir 48 do char, convertendo para inteiro
}
}
}

fclose(fp);
}

Link para o comentário
Compartilhar em outros sites

Obrigado!

Então, eu já estruturei em funçoes, ficou assim:


void fillMatriz(){
char *str1="./jogada.sdk";
FILE *fp=0;
int i,j;
char x=0;
int y=0;
fp=fopen (str1,"r");
if (!fp){
printf("Arquivo jogada.sdk inexistente!\n");
}
else{
x=getc(fp);
while(!feof(fp)){
for(i=0;i<9;i++){
for(j=0;j<9;j++){
y=atoi(&x);
S[i][j]=y;
x=getc(fp);
}
}
}
fclose(fp);
}
}

alguma coisa errada ainda???

(:

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!