C - zliczanie znaków

mic4ael
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0

Pewno niektórym zadanie to wyda się śmieszne, no ale cóż. Chciałem napisać program zliczający znaki w podanym przez użytkownika tekście. Program działa poprawnie do czasu gdy napotka spację. Nie wiem dlaczego jest ona w ogóle pomijana.

Kopiuj

#include <stdio.h>
#include <conio.h>


void ileZnakow(char[]);

int main()
{
	char something[1000]={0};
	
	printf("Dowolny tekst: ");
	scanf("%s", &something);
	
	ileZnakow(something);
	
	getch();
	return 0;
}

void ileZnakow(char cos[])
{
	int i;
	char w = cos[0];

		for (i=0;i<50;i++)
		{
		w=cos[i];
			if (w==0)
			{
				break;
			} else if (w==' ') {
				printf("Tu mamy spacje.");
			} else {
				printf("\nZnak nr %d to: %c", i+1,w);
			}	
		}
		printf("\n\nKoniec.");
		printf("\n\nIlosc znakow w Twoim tekscie: %d",i);
}
 
hauleth
  • Rejestracja: dni
  • Ostatnio: dni
0

Zamiast scanf użyj fgets. Funkcja licząca ilość znaków może być trochę prostsza:

Kopiuj
size_t ileZnakow(char* str) {
  int count = 0;
  while(*str) count += !isspace(*str++);
  return count;
}
mic4ael
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0

Dzięki. Postaram się sam zrozumieć, jak przedstawiony przez Ciebie kod działa.

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.