Oppure

Loading
05/04/09 18:29
frankus89
osservate questo programma (che dovrebbe essere stato scritto in maniera corretta):

#include <iostream>
#include <stdio.h>
using namespace std;

int main()
{
	char stringa [30];
	cout<<"stringa: ";
	gets(stringa);
	for (int i=0;i<30;i++) 
		//printf("%c",stringa[i]);
		cout << stringa[i];
		
	return 0;



questo l'output:

boss@linux-gwqn:~/Desktop> g++ prova2.cpp 
/tmp/ccX2SWet.o: In function `main':
prova2.cpp:(.text+0x88): warning: the `gets' function is dangerous and should not be used.
boss@linux-gwqn:~/Desktop> ./a.out
stringa: prova
prova&#65533;&#37183;X&#65533;)X&#65533;&#65533;&#65533;&#65533;&#65533;&#37183;&#65533;



che razza di errore è questo?:blush:
aaa
05/04/09 19:24
theprogrammer
Il programma non e' giusto e l'output e' corretto ...

Se visualizzi 30 caratteri di una stringa senza controllare quando questa termina, avrai a video il contenuto della stringa seguita dai caratteri casuali come nell'output che hai mostrato ...
aaa
07/04/09 5:10
XBarboX
scusa ma perchè lo hai scritto in forma di commento:
 //printf("%c",stringa[i]); 

Credo sia lì l'errore, perchè non viene nessuna lettura e quindi quando stampa la stringa, ti mostra dei caratteri a caso.
Correzione:
printf("%c",stringa[i]); 
aaa
07/04/09 7:55
frankus89
l'istruzione fra commenti era per denotare il fatto che ottenevo lo stesso risultato con printf e con cout.
Comunque adesso ho capito l'errore, ma il mio programma continua a non funzionare a run time.
vi passo il codice, con la speranza che qualcuno possa risolvere il bug.
Ps: un banale propgramma di crittografia..

#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;


void stampa_menu();
void decode(char *,int);
void code(char *,int);



int main()
{
	char str [30];
	int scelta,x;
	char ch;
	cout<<"Inserisci una stringa: ";
	gets(str);
	x=strlen(str);
		do {
		stampa_menu();
		cout<<"Digita il numero dell'operazione che vuoi eseguire: ";
		cin>>scelta;
		switch (scelta) {
			case 1: decode(str,x);
				break;
			case 2: code(str,x);
				break;
			case 3: exit(1);
				break;
			}
		}while (scelta>4 && scelta<0);
	return 0;
}

void stampa_menu() {
	cout<<"1) Decodifica una password; \n";
	cout<<"2) Codifica una password \n";
	cout<< "3) Esci dal programma";
}

void code(char *stringa,int k) {
	
	char string_new [30];
	for(int i=0;strlen(stringa)<k;i++){
		switch(stringa[i]) {
			case 'A': string_new[i]= 'q';
			break;
			case 'B': string_new[i]= 'w';
			break;
			case 'C': string_new[i]= 'e';
			break;
			case 'D': string_new[i]= 'r';
			break;
			case 'E': string_new[i]= 't';
			break;
			case 'F': string_new[i]= 'y';
			break;
			case 'G': string_new[i]= 'u';
			break;
			case 'H': string_new[i]= 'i';
			break;
			case 'I': string_new[i]= 'o';
			break;
			case 'J': string_new[i]= 'p';
			break;
			case 'K': string_new[i]= 'a';
			break;
			case 'L': string_new[i]= 's';
			break;
			case 'M': string_new[i]= 'd';
			break;
			case 'N': string_new[i]= 'f';
			break;
			case 'O': string_new[i]= 'g';
			break;
			case 'P': string_new[i]= 'h';
			break;
			case 'Q': string_new[i]= 'j';
			break;
			case 'R': string_new[i]= 'k';
			break;
			case 'S': string_new[i]= 'l';
			break;
			case 'T': string_new[i]= 'z';
			break;
			case 'U': string_new[i]= 'x';
			break;
			case 'V': string_new[i]= 'c';
			break;
			case 'W': string_new[i]= 'v';
			break;
			case 'X': string_new[i]= 'b';
			break;
			case 'Y': string_new[i]= 'n';
			break;
			case 'Z': string_new[i]= 'm';
			break;
			case 'a': string_new[i]= 'Q';
			break;
			case 'b': string_new[i]= 'W';
			break;
			case 'c': string_new[i]= 'E';
			break;
			case 'd': string_new[i]= 'R';
			break;
			case 'e': string_new[i]= 'T';
			break;
			case 'f': string_new[i]= 'Y';
			break;
			case 'g': string_new[i]= 'U';
			break;
			case 'h': string_new[i]= 'I';
			break;
			case 'i': string_new[i]= 'O';
			break;
			case 'j': string_new[i]= 'P';
			break;
			case 'k': string_new[i]= 'A';
			break;
			case 'l': string_new[i]= 'S';
			break;
			case 'm': string_new[i]= 'D';
			break;
			case 'n': string_new[i]= 'F';
			break;
			case 'o': string_new[i]= 'G';
			break;
			case 'p': string_new[i]= 'H';
			break;
			case 'q': string_new[i]= 'J';
			break;
			case 'r': string_new[i]= 'K';
			break;
			case 's': string_new[i]= 'L';
			break;
			case 't': string_new[i]= 'Z';
			break;
			case 'u': string_new[i]= 'X';
			break;
			case 'v': string_new[i]= 'C';
			break;
			case 'w': string_new[i]= 'v';
			break;
			case 'x': string_new[i]= 'b';
			break;
			case 'y': string_new[i]= 'n';
			break;
			case 'z': string_new[i]= 'm';
			break;
			case '0': string_new[i]= '=';
			break;
			case '1': string_new[i]= ')';
			break;
			case '2': string_new[i]= '(';
			break;
			case '3': string_new[i]= '/';
			break;
			case '4': string_new[i]= '&';
			break;
			case '5': string_new[i]= '%';
			break;
			case '6': string_new[i]= '$';
			break;
			case '7': string_new[i]= '-';
			break;
			case '8': string_new[i]= '"';
			break;
			case '9': string_new[i]= '!';
			break;
			case ' ': string_new[i]= '|';
			break;
			case 'l'istruzione fra commenti era per denotare il fatto che ottenevo lo stesso risultato con printf e con cout.

Comunque adesso ho capito l'errore, ma il mio programma continua a non funzionare a run time.
vi passo il codice, con la speranza che qualcuno possa risolvere il bug.
Ps: un banale propgramma di crittografia..

#include <iostream>
#include <cstdlib>
#include <string.h>
using namespace std;


void stampa_menu();
void decode(char *,int);
void code(char *,int);



int main()
{
	char str [30];
	int scelta,x;
	char ch;
	cout<<"Inserisci una stringa: ";
	gets(str);
	x=strlen(str);
		do {
		stampa_menu();
		cout<<"Digita il numero dell'operazione che vuoi eseguire: ";
		cin>>scelta;
		switch (scelta) {
			case 1: decode(str,x);
				break;
			case 2: code(str,x);
				break;
			case 3: exit(1);
				break;
			}
		}while (scelta>4 && scelta<0);
	return 0;
}

void stampa_menu() {
	cout<<"1) Decodifica una password; \n";
	cout<<"2) Codifica una password \n";
	cout<< "3) Esci dal programma";
}

void code(char *stringa,int k) {
	
	char string_new [30];
	for(int i=0;strlen(stringa)<k;i++){
		switch(stringa[i]) {
			case 'A': string_new[i]= 'q';
			break;
			case 'B': string_new[i]= 'w';
			break;
			case 'C': string_new[i]= 'e';
			break;
			case 'D': string_new[i]= 'r';
			break;
			case 'E': string_new[i]= 't';
			break;
			case 'F': string_new[i]= 'y';
			break;
			case 'G': string_new[i]= 'u';
			break;
			case 'H': string_new[i]= 'i';
			break;
			case 'I': string_new[i]= 'o';
			break;
			case 'J': string_new[i]= 'p';
			break;
			case 'K': string_new[i]= 'a';
			break;
			case 'L': string_new[i]= 's';
			break;
			case 'M': string_new[i]= 'd';
			break;
			case 'N': string_new[i]= 'f';
			break;
			case 'O': string_new[i]= 'g';
			break;
			case 'P': string_new[i]= 'h';
			break;
			case 'Q': string_new[i]= 'j';
			break;
			case 'R': string_new[i]= 'k';
			break;
			case 'S': string_new[i]= 'l';
			break;
			case 'T': string_new[i]= 'z';
			break;
			case 'U': string_new[i]= 'x';
			break;
			case 'V': string_new[i]= 'c';
			break;
			case 'W': string_new[i]= 'v';
			break;
			case 'X': string_new[i]= 'b';
			break;
			case 'Y': string_new[i]= 'n';
			break;
			case 'Z': string_new[i]= 'm';
			break;
			case 'a': string_new[i]= 'Q';
			break;
			case 'b': string_new[i]= 'W';
			break;
			case 'c': string_new[i]= 'E';
			break;
			case 'd': string_new[i]= 'R';
			break;
			case 'e': string_new[i]= 'T';
			break;
			case 'f': string_new[i]= 'Y';
			break;
			case 'g': string_new[i]= 'U';
			break;
			case 'h': string_new[i]= 'I';
			break;
			case 'i': string_new[i]= 'O';
			break;
			case 'j': string_new[i]= 'P';
			break;
			case 'k': string_new[i]= 'A';
			break;
			case 'l': string_new[i]= 'S';
			break;
			case 'm': string_new[i]= 'D';
			break;
			case 'n': string_new[i]= 'F';
			break;
			case 'o': string_new[i]= 'G';
			break;
			case 'p': string_new[i]= 'H';
			break;
			case 'q': string_new[i]= 'J';
			break;
			case 'r': string_new[i]= 'K';
			break;
			case 's': string_new[i]= 'L';
			break;
			case 't': string_new[i]= 'Z';
			break;
			case 'u': string_new[i]= 'X';
			break;
			case 'v': string_new[i]= 'C';
			break;
			case 'w': string_new[i]= 'v';
			break;
			case 'x': string_new[i]= 'b';
			break;
			case 'y': string_new[i]= 'n';
			break;
			case 'z': string_new[i]= 'm';
			break;
			case '0': string_new[i]= '=';
			break;
			case '1': string_new[i]= ')';
			break;
			case '2': string_new[i]= '(';
			break;
			case '3': string_new[i]= '/';
			break;
			case '4': string_new[i]= '&';
			break;
			case '5': string_new[i]= '%';
			break;
			case '6': string_new[i]= '$';
			break;
			case '7': string_new[i]= '-';
			break;
			case '8': string_new[i]= '"';
			break;
			case '9': string_new[i]= '!';
			break;
			case ' ': string_new[i]= '|';
			break;
			case '{parsed_message}': break;
			default: exit(1);
			}
			cout<<"Parola: ";
		for(int i=0;strlen(string_new)<=k;i++)
			cout<<string_new[i];
		}
		
		}
	
void decode(char *stringa, int k) {
	
	char string_new [30];
	for(int i=0;strlen(stringa)<k;i++){
		switch(stringa[i]) {
			
			case 'q': string_new[i]= 'A';
			break;
			case 'w': string_new[i]= 'B';
			break;
			case 'e': string_new[i]= 'C';
			break;
			case 'r': string_new[i]= 'D';
			break;
			case 't': string_new[i]= 'E';
			break;
			case 'y': string_new[i]= 'F';
			break;
			case 'u': string_new[i]= 'G';
			break;
			case 'i': string_new[i]= 'H';
			break;
			case 'o': string_new[i]= 'I';
			break;
			case 'p': string_new[i]= 'J';
			break;
			case 'a': string_new[i]= 'K';
			break;
			case 's': string_new[i]= 'L';
			break;
			case 'd': string_new[i]= 'M';
			break;
			case 'f': string_new[i]= 'N';
			break;
			case 'g': string_new[i]= 'O';
			break;
			case 'h': string_new[i]= 'P';
			break;
			case 'j': string_new[i]= 'Q';
			break;
			case 'k': string_new[i]= 'R';
			break;
			case 'l': string_new[i]= 'S';
			break;
			case 'z': string_new[i]= 'T';
			break;
			case 'x': string_new[i]= 'U';
			break;
			case 'c': string_new[i]= 'V';
			break;
			case 'v': string_new[i]= 'W';
			break;
			case 'b': string_new[i]= 'X';
			break;
			case 'n': string_new[i]= 'Y';
			break;
			case 'm': string_new[i]= 'A';
			break;
			case 'Q': string_new[i]= 'a';
			break;
			case 'W': string_new[i]= 'b';
			break;
			case 'E': string_new[i]= 'c';
			break;
			case 'R': string_new[i]= 'd';
			break;
			case 'T': string_new[i]= 'e';
			break;
			case 'Y': string_new[i]= 'f';
			break;
			case 'U': string_new[i]= 'g';
			break;
			case 'I': string_new[i]= 'h';
			break;
			case 'O': string_new[i]= 'i';
			break;
			case 'P': string_new[i]= 'j';
			break;
			case 'A': string_new[i]= 'k';
			break;
			case 'S': string_new[i]= 'l';
			break;
			case 'D': string_new[i]= 'm';
			break;
			case 'F': string_new[i]= 'n';
			break;
			case 'G': string_new[i]= 'o';
			break;
			case 'H': string_new[i]= 'p';
			break;
			case 'J': string_new[i]= 'q';
			break;
			case 'K': string_new[i]= 'r';
			break;
			case 'L': string_new[i]= 's';
			break;
			case 'Z': string_new[i]= 't';
			break;
			case 'X': string_new[i]= 'u';
			break;
			case 'C': string_new[i]= 'v';
			break;
			case 'V': string_new[i]= 'w';
			break;
			case 'B': string_new[i]= 'x';
			break;
			case 'N': string_new[i]= 'y';
			break;
			case 'M': string_new[i]= 'z';
			break;
			case '=': string_new[i]= '0';
			break;
			case ')': string_new[i]= '9';
			break;
			case '(': string_new[i]= '8';
			break;
			case '/': string_new[i]= '7';
			break;
			case '&': string_new[i]= '6';
			break;
			case '%': string_new[i]= '5';
			break;
			case '$': string_new[i]= '4';
			break;
			case '-': string_new[i]= '3';
			break;
			case '"': string_new[i]= '2';
			break;
			case '!': string_new[i]= '1';
			break;
			case ' ': string_new[i]= '|';
			break;
			
		}
		cout<<"Parola: ";
		for (int i=0;strlen(string_new)<k;i++)
		cout<<string_new[i];
		}
	} 



salutiii!:)': break; default: exit(1); } cout<<"Parola: "; for(int i=0;strlen(string_new)<=k;i++) cout<<string_new[i]; } } void decode(char *stringa, int k) { char string_new [30]; for(int i=0;strlen(stringa)<k;i++){ switch(stringa[i]) { case 'q': string_new[i]= 'A'; break; case 'w': string_new[i]= 'B'; break; case 'e': string_new[i]= 'C'; break; case 'r': string_new[i]= 'D'; break; case 't': string_new[i]= 'E'; break; case 'y': string_new[i]= 'F'; break; case 'u': string_new[i]= 'G'; break; case 'i': string_new[i]= 'H'; break; case 'o': string_new[i]= 'I'; break; case 'p': string_new[i]= 'J'; break; case 'a': string_new[i]= 'K'; break; case 's': string_new[i]= 'L'; break; case 'd': string_new[i]= 'M'; break; case 'f': string_new[i]= 'N'; break; case 'g': string_new[i]= 'O'; break; case 'h': string_new[i]= 'P'; break; case 'j': string_new[i]= 'Q'; break; case 'k': string_new[i]= 'R'; break; case 'l': string_new[i]= 'S'; break; case 'z': string_new[i]= 'T'; break; case 'x': string_new[i]= 'U'; break; case 'c': string_new[i]= 'V'; break; case 'v': string_new[i]= 'W'; break; case 'b': string_new[i]= 'X'; break; case 'n': string_new[i]= 'Y'; break; case 'm': string_new[i]= 'A'; break; case 'Q': string_new[i]= 'a'; break; case 'W': string_new[i]= 'b'; break; case 'E': string_new[i]= 'c'; break; case 'R': string_new[i]= 'd'; break; case 'T': string_new[i]= 'e'; break; case 'Y': string_new[i]= 'f'; break; case 'U': string_new[i]= 'g'; break; case 'I': string_new[i]= 'h'; break; case 'O': string_new[i]= 'i'; break; case 'P': string_new[i]= 'j'; break; case 'A': string_new[i]= 'k'; break; case 'S': string_new[i]= 'l'; break; case 'D': string_new[i]= 'm'; break; case 'F': string_new[i]= 'n'; break; case 'G': string_new[i]= 'o'; break; case 'H': string_new[i]= 'p'; break; case 'J': string_new[i]= 'q'; break; case 'K': string_new[i]= 'r'; break; case 'L': string_new[i]= 's'; break; case 'Z': string_new[i]= 't'; break; case 'X': string_new[i]= 'u'; break; case 'C': string_new[i]= 'v'; break; case 'V': string_new[i]= 'w'; break; case 'B': string_new[i]= 'x'; break; case 'N': string_new[i]= 'y'; break; case 'M': string_new[i]= 'z'; break; case '=': string_new[i]= '0'; break; case ')': string_new[i]= '9'; break; case '(': string_new[i]= '8'; break; case '/': string_new[i]= '7'; break; case '&': string_new[i]= '6'; break; case '%': string_new[i]= '5'; break; case '$': string_new[i]= '4'; break; case '-': string_new[i]= '3'; break; case '"': string_new[i]= '2'; break; case '!': string_new[i]= '1'; break; case ' ': string_new[i]= '|'; break; } cout<<"Parola: "; for (int i=0;strlen(string_new)<k;i++) cout<<string_new[i]; } }



salutiii!:)
aaa
07/04/09 8:36
gigisoft
Postato originariamente da frankus89:

l'istruzione fra commenti era per denotare il fatto che ottenevo lo stesso risultato con printf e con cout.
Comunque adesso ho capito l'errore, ma il mio programma continua a non funzionare a run time.
vi passo il codice, con la speranza che qualcuno possa risolvere il bug.
Ps: un banale propgramma di crittografia..

[...]


salutiii!:)


Cosa ti da come output?
aaa