Hola,
Estoy haciendo un programa que me calcule el numero de palabras en una cadena, lo he disenado calculando el numero de espacios y sumandole +1, el primer problema que puedo tener si tenemos dos espacios entre palabras ya no sera realista el calculo.... pero el pricipal problema es con el while me da error y no logro avanzar (he probado igualmente con for(...) y lo mismo.
#include <stdio.h>
#include <string.h>
int index, espacio;
char line[100];
int main()
{
strcpy(line,"hola sam, hola sam.");
index=0;
while (line[index] != '/0')
{
if (line[index] == ' ') {
++espacio; }
++index;
}
printf("%d palabras/n", espacio+1);
return (0);
}
y el error que da:
Compiling the source code....
$g++ main.cpp -o demo -lm -pthread -lgmpxx -lgmp -lreadline 2>&1
main.cpp:13:23: warning: multi-character character constant [-Wmultichar]
main.cpp:4:5: error: 'int index' redeclared as different kind of symbol
In file included from main.cpp:2:0:
/usr/include/string.h:471:22: error: previous declaration of 'const char* index(const char*, int)'
main.cpp: In function 'int main()':
main.cpp:11:7: error: overloaded function with no contextual type information
main.cpp:13:18: error: invalid types 'char [100][]' for array subscript
main.cpp:15:19: error: invalid types 'char [100][]' for array subscript
main.cpp:17:7: error: no pre-increment operator for type
Alguna ayuda?
Ya que estas en C++ mejor inclui cstring y cstdio, si seguis teniendo problemas por redeclarar index cambiale el nombre a indice a tu variable ... segui vos.
Utiliza un puntero para iterar dentro de la cadena:
#include <stdio.h>
#include <string.h>
int main()
{
char cadena[] = "hola sam, hola sam.";
char *pCadena = cadena;
int numEspacios = 0;
while (*pCadena != '\0') {
if (*pCadena == ' ') numEspacios++;
pCadena++;
}
printf("%d palabras/n", numEspacios+1);
return 0;
}
Tu código tiene un error: En el caso de la cadena vacía (char cadena[] = "") el programa imprimirá numEspacios+1 palabras, es decir, 0+1 palabras lo cual está mal.
Por tu registro de errores puedo suponer que estás programando en C++: main.cpp: In function 'int main()': ... así que te recomiendo el tipo String para manejar cadenas.
Un saludo.
El error no venia de ahí. El compilador le estaba diciendo que tenia una constante caracter que tenía mas de un caracter. Había puesto '/0' en lugar de '\0'
Y no llames a la variable index, te está diciendo que hay un conflicto con alguna función definida en string.h (Como ya había dicho Eternal)
¡Saludos!