program nie rozpoznaje znaku nowej lini

0

Witam,
Napisałem program, który wykonuje swoją główną funkcje, jednak mam problem ze zliczaniem liczby wierszy ze standardowego wejścia. Do pobierania danych (int) używam funkcji getchar i kolejne znaki zapisuje w zmiennej c. Standardowe wejście zostaje przekierowane na plik tekstowy.
W moim programie nie działa warunek

if (c == '\n') liczbawierszy++;<code>
Proszę o pomoc w odpowiedzi na pytanie, dlaczego ten warunek nie działa (problem polega na nie rozpoznawaniu znaku nowej lini) i propozycję jak to rozwiązać
Dziękuje,
Pozdrawiam,
Łukasz
1

if (c == '\u000a')

Ewentualnie może się przydać:
http://prac.us.edu.pl/~siminski/jp/jp_c_04.pdf
http://web.cs.mun.ca/~michael/c/ascii-table.html << Tablica ASCII

0

poniżej funkcja getint odpowiedzialna za pobieranie znaków i zliczanie wierszy.

 
int getint (struct List *p, int *n)
{	
	int sign, nr, i=0;
	char c;
	while ((c = getchar()) != EOF){
		sign = (c == '-')? -1:1;
		if (c == '+' || c == '-') 
			c = getchar();
		if (c == '\n') *n++;	/*zliczanie wierszy - ten warunek nie wykrywa znaku nowej lini*/
		for (nr = 0; isdigit (c); ) {
			nr = 10*nr + (c-'0');
			c = getchar();
			if (!isdigit (c)){
				nr *= sign;
				listinsert (p, nr);	/*dokłada nr do listy*/
				i++;
			}
		}
	}
	return i;
}
1
  1. Warunek działa, tylko że to kara za bezmyślne stosowanie inkrementacji przyrostkowej, zwiększasz adres nie wartość, użyj ++*n; lub (*n)++
  2. Postaw else przed for
  3. Skąd ta zmienna p ?
    Naucz się czytać komunikaty kompilatora.

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