problema programmazione C - aiutooooo!!!


xiloforo
 Share

Recommended Posts

perchè non funziona questo?

#include <stdio.h>

#include <math.h>

main ()

{

char nomefunz (num);

int num;

char prova[2];

printf("numero: ");

scanf("%d",&num);

prova=nomefunz(num);

printf("%s",prova);

}

char nomefunz (num2)

int num2;

{

char prova2[2];

if (num2>5) prova2[2]={'a','\0'};

return(prova2);

}

Link to comment
Share on other sites

  • Replies 41
  • Created
  • Last Reply

Top Posters In This Topic

l'ho modificato

#include <stdio.h>

#include <math.h>

main ()

{

char nomefunz (int num);

int num;

char prova[2];

printf("numero: ");

scanf("%d",&num);

prova[2]=nomefunz(num);

printf("%s",prova);

}

char nomefunz (num2)

int num2;

{

char prova2[2];

if (num2>5) prova2[2]='a';

return(prova2);

}

ora mi accetta in numero in ingresso, ma non mi da niente in uscita se num è maggiore di 5...

sto impazzendo, perchè fa così!?!?!?!?

Link to comment
Share on other sites

Ma di cosa stai parlando?

Per favore, metti un titolo meno generico alla discussione o la gente la salterà a piedi pari (lo farei io, ma non ho capito di cosa parli...).

Anticipa la tua richiesta da una introduzione del problema: che computer usi, quale software, cosa stai facendo, ecc...

grazie.

Link to comment
Share on other sites

perchè non funziona questo?

#include <stdio.h>

#include <math.h>

main ()

{

char nomefunz (num);

int num;

char prova[2];

printf("numero: ");

scanf("%d",&num);

prova=nomefunz(num);

printf("%s",prova);

}

char nomefunz (num2)

int num2;

{

char prova2[2];

if (num2>5) prova2[2]={'a','\0'};

return(prova2);

}

è un programma in C giusto?

Link to comment
Share on other sites

Con

char prova2[2]

crei un area di memoria da 2 caratteri

Con

if(num2>5) prova2[2]='a';

assegni il secondo carattere 'a' mentre il

primo non sai cos'e' inoltre non c'e' il terminatore di stringa \0 per cui la stampa

di una stringa avra' un risultato inaspettato, da quello che ti succede sembra che prova2[0] e' pari a \0 e quindi viene stampata una stringa vuota.

Per correggere fai cosi'

if(num2>5)

{

prova2[0]='a';

prova2[1]='\0';

}

Ora stampa 'a'?

Un'altra cosa se fai

char prova2[2];

hai disponibile un array di due caratteri le cui posizioni sono 0 e 1, visto che un carattere viene usato per terminare una stringa ((\0) in pratica prova2 puo' contenere solo una stringa di un carattere.

Spero la spiegazione ti serva, ciao

Link to comment
Share on other sites

l'ho modificato

#include <stdio.h>

#include <math.h>

main ()

{

char nomefunz (int num);

int num;

char prova[2];

printf("numero: ");

scanf("%d",&num);

prova[2]=nomefunz(num);

printf("%s",prova);

}

char nomefunz (num2)

int num2;

{

char prova2[2];

if (num2>5) prova2[2]='a';

return(prova2);

}

ora mi accetta in numero in ingresso, ma non mi da niente in uscita se num è maggiore di 5...

sto impazzendo, perchè fa così!?!?!?!?

non dovresti mettere:

return(prova2[2]);

ora non ricordo bene perchè queste cose le ho fatte 3 anni fa

Link to comment
Share on other sites

scusatemi!!! sono un novizio sia di programmazione che di questo sito... allora rimedio.

il programma è in c, sò che nessuno lo usa più, ma devo per forza impararlo

uso un macbook, e programmo (si fa per dire) con xcode.

il problema è questo: dovrei prendere un numero in ingresso, mandarlo alla funzione nomefunz, se questo è maggiore di 5, dovrebbe assegnare alla strinza prova il testo "ciao", buttarlo fuori di nuovo al main che lo stampa. ho fatto delle modifiche, ma non funziona ancora bene, perchè non mi manda fuori il valore.

cioè mi stampa ciao, in questa nuova versione, ma solo quello dentro l'enunciato if, mentre non manda fuori il valore, per stamparlo la seconda volta...

so che sono incomprensibile, ma mancando di tecnicismi, sono costretto a perifrasi e ad assurdi giri di parole...

il nuovo codice è questo:

#include <stdio.h>

#include <math.h>

main ()

{

char nomefunz (int num);

int num;

char prova[2];

printf("numero: ");

scanf("%d",&num);

prova[2]=nomefunz(num);

printf("%s",prova);

}

char nomefunz (num2)

int num2;

{

char *prova2;

if (num2>5) {

prova2="ciao";

printf("%s",prova2);

}

return(prova2);

}

Link to comment
Share on other sites

quindi mi dici di fare così? ma mi da errore... :(

#include <stdio.h>

#include <math.h>

main ()

{

char nomefunz (int num);

int num;

char prova[2];

printf("numero: ");

scanf("%d",&num);

prova[2]=nomefunz(num);

printf("%s",prova);

}

char *nomefunz (num2)

int num2;

{

char prova2[2];

if (num2>5)

{

prova2[0]='a';

prova2[1]='\0';

}

return(prova2);

}

Link to comment
Share on other sites

Si sono sempre distratto, nella main() questa riga e' sbagliata

prova[2]=nomefunz(num);

devi mettere

strcpy(prova, nomefunz(num));

cioe' copi la stringa generata nello stack

nella stringa locale, dopodiche' la stampa andra'

Ah per terminologia quando dici che ti da errore specifica se e' un errore di compilazione o di esecuzione e riporta cosa scrive ;)

Ciao

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share