Autor
|
Tema: [C] Error Caracteres (SOLUCIONADO) (Leído 3,821 veces)
|
MeCraniDOS
Desconectado
Mensajes: 337
Sr. Glass
|
Hola, estoy intentando hacer un programa que por ejemplo escribas una cadena, y a esa cadena sumarle un carácter, es decir, lea carácter a carácter, y lo muestre por pantalla, pero sumándole un carácter..
Explicación: Cadena Origen: "Hola que tal" Cadena Final: "Ipmb rvf ubm" Pero el resultado es este: Cadena Origen: "Hola que tal" Cadena Final: "ipmbrvfubmmm" Es decir, sube un carácter en toda la cadena, y los espacios los pone al final como la ultima letra...
Podríais decirme porque podría ser?
Saludos
|
|
« Última modificación: 20 Abril 2013, 18:15 pm por MeCraniDOS »
|
En línea
|
"La física es el sistema operativo del Universo" -- Steven R Garman
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Pues a mí no me da ese problema:Ipmb rvf ubm
#include <stdio.h> int main(){ int i ; char frase[100]="Hola que tal"; //printf("Escribe una frase: "); //scanf("%s",&frase); for (i=0;frase[i]!='\0';i++){ if (frase[i]!=' ') frase[i]+=1; } printf("%s", frase); return 0; }
Saluditos!. ....
|
|
|
En línea
|
|
|
|
MeCraniDOS
Desconectado
Mensajes: 337
Sr. Glass
|
Pues a mí no me da ese problema:
Mi código es este, bueno, la parte en la que me da ese error:#include <stdio.h> #include <iostream> #include <fstream> #include <io.h> using namespace std; int main(void) { /* char cadena[20]; int n; printf("Escriba una frase\n"); gets(cadena); printf("Cadena con caracter sumado\n"); for(n=0;n<19;n++) { printf("%c", cadena[n] + 1); } getchar(); */ string Nombre; string Final; printf("Escribe el nombre del archivo que deseas abrir: "); getline(cin,Nombre); ifstream fichero_original; ofstream fichero_final; char caracter1, caracter2; fichero_original.open(Nombre.c_str(), ios::binary); Nombre += "_Char.txt"; Final = Nombre; fichero_final.open(Final.c_str(), ofstream::binary); fichero_original.seekg(0,ios::end); unsigned long Tamanyo = fichero_original.tellg(); fichero_original.seekg(0); for (unsigned int i = 0;i<Tamanyo;i++) { fichero_original>>caracter1; caracter2 = caracter1 + 1; fichero_final<<caracter2; } fichero_original.close(); fichero_final.close(); }
Lo que hay en el comentario, entre /* */ no me da ningún problema, pero cuando abro un archivo si, al código le he quitado mucha cosa que no se necesita
Saludos
PD: Es una mezla de C y C++
|
|
|
En línea
|
"La física es el sistema operativo del Universo" -- Steven R Garman
|
|
|
85
|
parece una mezcla imprudente de c con c++ , lo podés hacer en C? por ejemplo ya lo hicieron anteriormente (sin la parte de abrir un archivo de texto). ... #include <stdio.h> int main(){ int i ; char frase[100]="Hola que tal"; //printf("Escribe una frase: "); //scanf("%s",&frase); for (i=0;frase[i]!='\0';i++){ if (frase[i]!=' ') frase[i]+=1; } printf("%s", frase); return 0; }
...
|
|
« Última modificación: 20 Abril 2013, 02:14 am por 85 »
|
En línea
|
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
Hola MeCrani xD. Cambia el bucle for para que no modifique espacios: for (unsigned int i = 0;i<Tamanyo;i++) { fichero_original>>caracter1; if (caracter1 != ' ') // Si no es un espacio caracter2 = caracter1 + 1; fichero_final<<caracter2; }
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Lo que hay en el comentario, entre /* */ no me da ningún problema, pero cuando abro un archivo si [...] PD: Es una mezla de C y C++ Como ya te comentaron no es una buena idea mezclar C y C++, mejor hacerlo todo en este ultimo. Para ello puedes utilizar los operadores >> y <<, también se debe utilizar noskipws para procesar todo el contenido del archivo de entrada incluyendo el espacio blanco. Un programa de ejemplo: #include <iostream> using std::noskipws; using std::cin; using std::cout; #include <fstream> using std::ifstream; using std::ofstream; #include <string> using std::string; #include <cctype> using std::isspace; int main() { string nom_entrada; cout << "Nombre del archivo de entrada: "; getline(cin, nom_entrada); ifstream entrada(nom_entrada.c_str()); noskipws(entrada); string nom_salida = nom_entrada + "_Char.txt"; ofstream salida(nom_salida.c_str()); for (unsigned char ch; entrada >> ch; salida << ch) if (!isspace(ch)) ch++; entrada.close(); salida.close(); return 0; }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[SOLUCIONADO] Problema sustituyendo carácteres.
.NET (C#, VB.NET, ASP)
|
TheKillerWantsYou
|
2
|
2,658
|
25 Julio 2009, 20:46 pm
por TheKillerWantsYou
|
|
|
Insertar caracteres en una variable [Batch] (SOLUCIONADO)
« 1 2 »
Scripting
|
DA KILLER
|
12
|
9,250
|
3 Julio 2010, 23:38 pm
por DA KILLER
|
|
|
[Solucionado] límite de carácteres en textbox
.NET (C#, VB.NET, ASP)
|
Krizzz
|
6
|
10,857
|
17 Septiembre 2010, 09:32 am
por Krizzz
|
|
|
Cadenas de caracteres solucionado
Programación General
|
malocha
|
0
|
1,707
|
18 Julio 2011, 00:18 am
por malocha
|
|
|
Imprimir caracteres en C[Solucionado]
Programación C/C++
|
Senior++
|
8
|
3,557
|
7 Febrero 2013, 22:01 pm
por leosansan
|
|