funkcja porzucająca niepotrzebną część wiersza

0

Witam,
Głowie się na zadaniem, ponieważ chciałbym je zrobić w jak najprostszy sposób, ale wydaje mi się, że napisana przeze mnie funkcja działa tylko przypadkowo.
Treść zadania mówi o stworzeniu funkcji, która pobierze z danych wejściowych pierwsze słowo i porzuci resztę wiersza przy czym za słowo uznajemy ciąg znaków nie zawierający odstępów, tabulatorów, znaków nowej linii.

Pomimo tego, że funkcja niby działa (nie mam pewności co do jej rzeczywistej poprawności), to wciąż mam problem z ujęciem warunku w sprawie tabulatora.
W momencie gdy dopisuje go, albo chociażby używam podczas wprowadzania danych, to w wyniku ich przesłania otrzymuje krzaczki.

#include <stdio.h>
#define MAX 81
int main()
{
	
	char slowo[MAX];
	char *wsk;
	
	fgets(slowo, MAX, stdin);
	for (wsk = slowo; *wsk != '\0', *wsk != ' '; wsk++){
	 	putchar(*wsk);
	}	

	return 0;
	
}
 
0
*wsk != '\0', *wsk != ' '

Prędzej

*wsk != '\0' && *wsk != ' '

Poza tym masz isspace(), korzystaj z niej zamiast ręcznie porównać ze wszystkimi białymi znakami.

0

Dzięki. Poprawiłem tę część, bo rzeczywiście wyglądało to słabo.

 
#include <stdio.h>
#define MAX 81
int main()
{
	
	char slowo[MAX];
	char *wsk;
	char ch;
	
	fgets(slowo, MAX, stdin);
	for (wsk = slowo; *wsk != '\0' && *wsk != ' ' && '\t'; wsk++){
	 	putchar(*wsk);

	}	

	return 0;
	
}

Problem krzaczków już nie występuje, ale wprowadzeniu tabulatora w wierszu i po przesłaniu danych
funkcja zwraca wprowadzone dane.

Wprowadziłem warunek *wsk != isspace(ch), ale to tylko pokazało, że funkcja nie działa tak jak mi się zdawało.

1
*wsk != '\0' && *wsk != ' ' && '\t';

Co to niby za warunek po drugim &&?

Nie

*wsk != isspace(ch)

tylko

!isspace(*wsk)

Poza tym co to jest ch?

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