Wczytywanie znakow do bufora

Wczytywanie znakow do bufora
AN
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 10 lat
  • Postów:78
0

Witam...Chce wczytywać znaki z pliku znak po znaku i sprawdzać czy jest z kodu ascii...ale napotykam problem..Robie coś głupiego w tym kodzie?

Kopiuj
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
int main()
{
	int dsc = open("test.txt", O_RDONLY);
	int buf[1];
	int rd;
	
	while((rd = read(dsc,buf,1)) != 0)
	{
		if(!isascii(buf[0]))
		{
			printf("Plik nie jest tekstowy");
			exit(1);
		}
	}
	printf("plik jest tekstowy");
	getch();
	exit(0);
} 
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:4 dni
  • Lokalizacja:Szczecin
0

read zwraca -1 w przypadku błędu, sprawdzaj czy wynik funkcji == 1. Poza tym, pisz dokladniej z czym masz problem, "napotykam problem" nie mówi absolutnie nic. Problem ze zrozumieniem działania? Z kompilacją? Z wykonaniem programu?


AN
a nie zwraca liczby wczytanych bajtow do bufora?? jak nic nie wczyta czyli jest juz koniec pliku?
kq
rtfm: http://linux.die.net/man/2/read -1 dla błędu, 0 dla eof, inaczej liczbę bajtów wczytaną.
AN
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 10 lat
  • Postów:78
0

no jak skompiluję i odpalę program to pisze, że plik nie jest tekstowy - chociaż jest...nie wiem, czy źle przekazuje bufor do isascii() i czy moge wczytywać po jednym znaku...?

0

Uzywaj strace, aby się połapać gdzie tkwi błąd.

$ strace program.out

Zmień typ bufora na char i powinno chodzić.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.