Białe znaki a \0

0

Witam, pisząc kod:

  printf("Podaj zdanie: \n");
  scanf("%100s",a);

  for(int i=0;i<100;i++)
  {
    if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
    {
     licz++; 
    }
    else if(a[i]==' ')
    {
      licz++;
    }
    else if(a[i]=='\0')
    {
      break;
    }
    
    else
    {
      printf("Incorrect input");
      return 1;
    } 
  }

natrafiłem na problem że znak spacji jest interpretowany jako \0.
za zadanie jest policzenie znaków i spacji.

2

Do poczytania: http://www.cplusplus.com/reference/cstdio/scanf/
Czyli spacja nie jest traktowana jak zero, ale każdy biały znak powoduje że "%s" kończy wczytywanie, więc zero jest dopisywane jako oznacznie końca napisu.
Spróbuj tak:

scanf("%100[^\n]",a);
0

Działa, tylko co oznacza ten zapis [^\n]

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