Buenas estaba mirando unos ejerciocios y consigo que compile tras unas llaves pero no soy capaz de que me haga lo deseado:
#include <iostream.h> // Usamos: ios, cin, cout
#include <iomanip.h> // Usamos: resetiosflags
void Leer_Cadena(char * s) {
cin >> resetiosflags(ios::skipws); // Para que no pase los caracteres blancos.
for (int i= 0; cin >> s[i]; i++){ // Leer caracteres hasta el caracter nulo.
if (s[i] == '\n') break;{
s[i]= '\0'; }} // Pone el caracter de fin de cadena.
}
int StrLen(char * s) {
char * s0= s;
while (*s++);
return s - s0 - 1;
}
int main() {
char s[100]; // Buffer de capacidad de hasta 99 caracteres y '\0'. Si metemos m s caracteres hay posibilidad de 'cuelgue'
cout << endl << "Introduce una cadena (termina con CTRL-Z o INTRO)" << endl;
Leer_Cadena(s);
cout << endl << "La cadena es: " << s << endl;
cout << "Y su longitud es: " << StrLen(s);
system("pause");
}
a ver si alguien es capaz de hacerlo funcionar y decirme por que no me imprime lo deseado, quizas sea el compilaodr uso dev C++
* Te fallan los nombres de las librerías, además te faltan un par de ellas.
* Te has hecho un lío con las llaves del for y el break.
* Te falta el return de main.
Una salida con las correcciones que te propongo:Citar
Introduce una cadena (termina con CTRL-Z o INTRO)
leosansan 123 456 47anonimo74
La cadena es: leosansan 123 456 47anonimo74
Y su longitud es: 29
Presione una tecla para continuar . . .
#include <iostream> // Usamos: ios, cin, cout
#include <iomanip> // Usamos: resetiosflags
#include <cstdlib>
#include <cstring>
using namespace std;
void Leer_Cadena(char * s) {
int i;
cin >> resetiosflags(ios::skipws); // Para que no pase los caracteres blancos.
for ( i= 0; cin >> s[i]; i++){// Leer caracteres hasta el caracter nulo.
if (s[i] == '\n')
break;
}
s[i]= '\0'; // Pone el caracter de fin de cadena.
}
int StrLen(char * s) {
char * s0= s;
while (*s++);
return s - s0 - 1;
}
int main() {
char s[100]; // Buffer de capacidad de hasta 99 caracteres y '\0'. Si metemos m s caracteres hay posibilidad de 'cuelgue'
cout << endl << "Introduce una cadena (termina con CTRL-Z o INTRO)" << endl;
Leer_Cadena(s);
cout << endl << "La cadena es: " << s << endl;
cout << "Y su longitud es: " << StrLen(s)<< endl;
system("pause");
return 0;
}
¡¡¡¡ Saluditos! ..... !!!!
(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
muchas gracias por tu respuesta, claro a mi me compilaba y confiado que que funcionaba, ahora ya se un poco, mas pero el return 0 por lo general yo no o uso sera que siempre acabo poniendo un exit(0); antes de llegar.
Cita de: 47anonimo74 en 9 Febrero 2014, 11:46 AMel return 0 por lo general yo no o uso sera que siempre acabo poniendo un exit(0); antes de llegar.
En la función main no es necesario utilizar una llamada a la función exit para terminar el programa ya que una sentencia "return N;" tiene el mismo efecto.
Un saludo