getchar() w C

0

Nie rozumiem jak dziala getchar(). Chcialbym zeby program czytal z pliku kolejne znaki i zapisywal je do tabeli az skonczy sie piewrszy wiersz. Mam taki kod

 #include <stdio.h>

int main(void) {
	FILE *fp;
	int i=0;
	char A[200];
	int c;

	fp = fopen("input.txt", "r");
	
	while (c=getchar() != '\n') && i<200) {
		A[i]=(char)c;
		i++;
	}
}

tylko nawet nie wiem czy dobrze tu uzylem getchar(), kod ten nie dziala wiec na pewno nie dobrze. Nie wiem jak poradzic sobie z typami i takimi rzeczami. Moglby mi ktos pomoc?

1

Zrób tak:

#include <stdio.h>

int main() {
    FILE *file = fopen("input.txt","r");
    if(file){
        char buffer[200];
        int chr = 0, i = 0;
        while((chr = fgetc(file)) != '\n' && i < 200){
            buffer[i] = (char)chr;
            i++;
        }
        buffer[i] = '\0';
        printf("%s", buffer);
        fclose(file);
    }
    else perror("Cannot open file!");
    return 0;
}

getchar() służy do pobierania danych z wejścia standardowego. Do plików używaj fgetc().
http://www.cplusplus.com/reference/cstdio/fgetc/

0

probowalem przerobic ten kod by czytal wszystkie wiersze, ale nie dziala. Nie wiem jak dla j sprawdzic czy plik juz sie skonczyl czy nie

 #include <stdio.h>
 
int main() {
    FILE *file = fopen("input.txt","r");
    if(file){
        char buffer[101][201];
        int chr = 0, i = 0, j=0, end=0;
		while(j<101 && end==0){
        	while((chr = fgetc(file)) != '\n' && i < 201){
            	buffer[j][i] = (char)chr;
            	i++;
				if(chr == EOF) end=1;
        	}
		buffer[j][i] = '\0';
		j++;
		
		}
        buffer[j][0] = '\0';
		for(j=0; j<101; j++){
        	printf("%s", buffer[j]);
		}
    }
    else perror("Cannot open file!");
    return 0;
}

dziekuje za pomoc

0

Wiele linijek możesz zrobić sobie tak:

#include <stdio.h>

int main() {
    FILE *file = fopen("input.txt","r");
    if(file){
        fseek(file,0,SEEK_END);
        int size = ftell(file);
        char buffer[size];

        rewind(file);
        fread(buffer,1,size,file);
        printf("%s\n",buffer);
        
        fclose(file);
    }
    else perror("Cannot open file!\n");
    return 0;
}
0

Hej zagubiony_uzytkownik może coś takiego Ci pomoże??.

#include <stdio.h>

#define WIERSZ 201
#define KOLUMNA 101

int main()
{
        char buffer[WIERSZ][KOLUMNA];
        int i=0,j=0,ch;
        FILE *file=fopen("input.txt","r");
        while((ch=getc(file))!=EOF)
        {
            if(ch != '\n'&& i< KOLUMNA)
            {
                buffer[j][i]=(char)ch;
                i++;
            }
            else if(j<WIERSZ)
            {
                j++;
                i=0;
            }
        }
return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1