• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Correggere il codice C

pe.pp.e

Utente Medio
Autore del topic
10 Aprile 2012
101
0
Miglior risposta
0
Salve a tutti.Ho scritto un codice in c solo che come risultato della visualizzazione mi da -1 mentre io voglio 0.Il problema è che non so dove ho sbagliato,quindi ringrazio chiunqua mi dia una mano e mi spieghi il mio errore.

#include <string.h>
#include <stdio.h>
#include<stdlib.h>
void main()
{
const char *p;
char b[10];
char a[] = "PASS";
p = strchr("inserisci la password",'l');
strncpy(b,&p[3],strlen(p)-7);
printf("%d\n", strcmp(a,strupr(b)));
system("pause");
}
 
Riferimento: Correggere il codice C

Se vuoi imparare a programmare in C, fare queste richieste non ti servirà a nulla.

Prova ad indicare, riga per riga, cosa stai facendo (commenta il significato delle funzioni richiamate e cosa vuoi ottenere in ogni riga) e vedrai che potrà succedere che capirai da solo. In caso contrario avrai sicuramente una mano.

Per ora ti fornisco un suggerimento utile sia per questo tuo codice sia in generale con il C.

Devi sempre tener conto che le stringhe in C, per essere regolarmente trattate con tutte le funzioni dell'header string.h, devono essere terminate con il carattere 0 binario. Questo carattere viene sempre cercato da tali funzioni per determinare la fine della stringa.
A volte il terminatore viene aggiunto automaticamente (dal compilatore o dalle funzioni), altre volte dovrà essere il tuo codice ad aggiungerlo.
 
Ultima modifica:
Riferimento: Correggere il codice C

ah ho capito quindi mi stai dicendo di controllare meglio il carattere terminatore delle mie stringhe e casomai non ci sia di aggiungerlo.Ora vedo se riesco a risolvere da solo...comunque grazie per la dritta!!!!
 
Riferimento: Correggere il codice C

Esatto ... considera che, ad esempio, la funzione strncpy non aggiunge automaticamente il terminatore.
 
Riferimento: Correggere il codice C

ho risolto modificando il codice nel seguente modo:

b[4]='\0';

Infatti impostando b[4]='\0'; la visualizzazione è 0!!!!
 
Ultima modifica:
Riferimento: Correggere il codice C

Giusto, ma per renderlo più generico puoi scrivere

b[strlen(a)]='\0';
 
Riferimento: Correggere il codice C

Rinomino visto che il problema è stato risolto ^^