Come da titolo,vorrei creare un programma che elimini tutti i caratteri di spaziatura alla fine di una riga.Ne ho scritto uno,però quando lo vado ad eseguire mi segnala che il programma smette di funzionare...
Come da titolo,vorrei creare un programma che elimini tutti i caratteri di spaziatura alla fine di una riga.Ne ho scritto uno,però quando lo vado ad eseguire mi segnala che il programma smette di funzionare...
Magari è meglio di quale linguaggio si parla ...
E sarebbe ancora meglio che tu postassi il tuo codice così si corregge ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Giusto...ho dimenticato di specificare,parlo della programmazione in C...
ed ecco il codice:
codice:#include <stdio.h> #define MAX 1000 //massima lunghezza di una stringa int copy(char to[], char from[]); void cstring(int from,char to[]); main() { char string[MAX]; char str[MAX]; int i,c,s; c=getchar(); cstring(c,str); /*n=lunghezza della linea;c-string-str=input*/ int n; while(c!=EOF) { n=copy(string,str); for(i=0;i<=n;++i) { if(str[i]!=' ' && str[i]!='\t') printf("%s",str[i]); else if(str[i]==' ' || str[i]=='\t') { s=i; while(i<=n) { ++i; if(str[i]!=' '&&str[i]!='\t') { printf("%s",str[s]); i=s++; break; } } } } } } // Trasferisce l'input "da" nell'output "ad" void cstring(int da,char ad[]) { int i; i=0; while ((to[i]=from[i])!='\n') ++i; } // Copia "from" in "to" e ne calcola la lunghezza int copy(char to[], char from[]) { int i; for (i=0;;++i) ad[i]=da; return i; }
Scusa ma come funziona?
Cosa fai con
c=getchar();
?
La getchar acquisisce un solo carattere da tastiera ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Mi sto rendendo conto ora degli errori...comunque io volevo fare in modo che prendesse un'input,lo trasferisse in un array di char e dall'array farebbe tutte le modifiche
Per l'input puoi usare tranquillamente scanf/fscanf/fgets.
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Mi pare che siano le funzioni giuste ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
Sono arrivato a questo...
Il problema però persiste.codice:#include <stdio.h> #define MAX 1000 //massima lunghezza di una stringa int cstring(char from[],char to[]); main() { char string[MAX]; char str[MAX]; int i,s; scanf(&string); while(string!=EOF) { int n=cstring(string,str); for(i=0;i<=n;++i) { if(str[i]!=' ' && str[i]!='\t') printf("%s",str[i]); else if(str[i]==' ' || str[i]=='\t') { s=i; while(i<=n) { ++i; if(str[i]!=' '&&str[i]!='\t') { printf("%s",str[s]); i=s++; break; } } } } } } // Trasferisce l'imput "from" nell'output "to" e ne calcola la lunghezza int cstring(char from[],char to[]) { int i; for (i=0;from!='\n';++i) from[i]=to[i]; return i; }
Ma tu il codice lo compili e non ci sono errori? Sicuro?
Come hai usato la scanf ?
http://www.cplusplus.com/reference/cstdio/scanf/
Cosa vuol dire quella while usata in quel modo?
Comunque è meglio che utilizzi la fscanf
fscanf(string, MAX, stdin);
per l'input al posto della scanf
No MP tecnici (non rispondo nemmeno!), usa il forum.