C - zliczanie znaków

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.


#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);
}
 
0

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

size_t ileZnakow(char* str) {
  int count = 0;
  while(*str) count += !isspace(*str++);
  return count;
}
0

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

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