Ciao a tutti, innanzitutto mi scuso se non è la sezione giusta.

Sono un principiante e stavo provando a fare un programmino che ritorni il numero di parole in una stringa, utilizzando array + funzioni con le quali mi trovo sempre in difficoltà.

Vi chiedo se possibile di spiegarmi perchè non funziona come l'ho fatto, e magari di spiegarmi accorgimenti per migliorare il programma, l'ordine etc..
codice:
#include <cstdlib>
#include <iostream>
#include <string>
#include <cstring>

using namespace std;

char stringarray[100];
std::string inputstr;
int count_words(char stringarray[100]);
int numpar;

int main()
{
  std::cout << "Scrivi frase: ";
  std::getline(std::cin, inputstr);
  std::strcpy(stringarray, inputstr.c_str());
  numpar = count_words(stringarray);
  cout << "Numero parole: " << numpar;
    
    return(0);
}

int count_words(char str[100]){
int num;
for (int i=0; str[i]=='\0'; i++){
if (str[i] == ' ' || str[i] == '\0')
num++;
}
return(num);
}
Grazie mille, Luca.