[C con Clase] problema con puntero io caracter

Steven Davidson srd4121 en njit.edu
Vie Jul 1 13:41:56 CEST 2011


Hola Josep,

2011/7/1 josep el wendo <josepbord en hotmail.com>

>  hola de nuevo;
>
> debe ser una gilipollez, pero no encuentro la manera;
>
> esto es un trozo de codigo para que quite los " " espacios de un array de
> caracteres:
>

Bueno, viendo un poco el código, te puedo decir que esto no es necesario,
porque 'cin >>' se detiene al encontrar un espacio. De hecho, se detiene al
encontrarse un espacio blanco: ' ', '\t' (tabulación), '\r' (retorno de
carro), '\n' (nueva línea), '\v' (tabulación vertical), '\f' (avance de
página).


> char paraula[40] ;
>
>
>
>
> int main()
> {
>
>      cin>> paraula;
>
>
>
>       for (int i=0; i<40;i++)
>   {
>
>       if ( paraula[i] == " ") aqui esta el fallo,  me dice que no se puede
> comparar un puntero con un  integer  y si pongo *paraula[i] lo cual me da,
> creo, el valor de paraula[i] o sea, el caracter, me da "invalid type
> argument of 'unary'"
>

Esto es normal porque las comillas indican una cadena de caracteres. Así es
que estás intentando comparar un carácter con una cadena de caracteres. En
cuanto a '*paraula[i]', no tiene sentido, porque estaría intentando usar un
'char' como si fuese un puntero, cosa que no es.

El puntero realmente es la caden literal: " " y el entero es el carácter de
tipo 'char' que obtienes con: paraula[i].


>       for (int j=i; j<39;j++)
>       {
>           paraula[i]=paraula [i+1];
>           }}
>           cout <<"sin espacios   "<< paraula<<endl;
>
>
Este código te sirve para eliminar los primeros espacios en una cadena, pero
no todas. No sé si esto es lo que quieres hacer.

De todas maneras, ten presente que la cadena se guarda en un array
finalizada (la cadena) por un carácter nulo. Por lo tanto, sugiero que
busques ese carácter nulo, para ir "mudando" todos los caracteres de la
cadena. No te interesa mover los demás caracteres que no pertenezcan a la
cadena, pero sí se guardan en el array.


> entonces, como accedo a los valores del array uno a uno para operar con
> ellos?
>
>
Con el operador [] junto con un entero que representa un índice. Esto ya lo
vienes haciendo.


Espero haber aclarado las dudas.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110701/1b522840/attachment.html>


Más información sobre la lista de distribución Cconclase