|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Problema con stringhe
Ciao
Devo scrivere un programma che prenda da un file di testo una serie di stringhe e mi stampi solamente quelle che terminano con "ed". Il codice che ho scritto è il seguente, mi sembra giusto però non stampa niente. Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXCHAR 200
void numerostringhe2(char *s1, char *s2);
int main(void){
char *s1=(char *)malloc((MAXCHAR+1)*sizeof(char));
char *s2=" ";
int i=0;
char c;
while((c=getchar())!=EOF)
s1[i++]=c;
s1[i]='\0';
numerostringhe2(s1,s2);
return 0;
}
void numerostringhe2(char *s1, char *s2){
int i=1;
char *tmp;
tmp=strtok(s1,s2);
if(tmp[strlen(tmp)]=='d' && tmp[strlen(tmp)-1]=='e')
printf("%s", *tmp);
while((tmp=strtok(NULL,s2))!=NULL)
if(tmp[strlen(tmp)]=='d' && tmp[strlen(tmp)-1]=='e')
printf("%s", *tmp);
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
domanda scema è ... ma il file ando sta? non mi sembra proprio che te lavori sui file. Poi ti sei innamorato di strtok?
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Il file lo do in input io tramite la redirezione.
Uso strtok in modo da isolare le varie sottostringhe e controllarle separatamente. Altrimenti come posso fare? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8897
|
allora tra che si potrebbe verificare un bufferoverflow come ridere ... a parte questo insignificante problema ... puoi anche usare un for.
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Scusa ma così non mi aiuti molto. Il for al posto di cosa? In qualunque caso uso strtok per prendere le sottostringhe
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ciao, ti riscrivo (corretto) il ciclo nella funzione numerostringhe2():
Codice:
tmp = strtok (s1, s2);
while (tmp != NULL)
{
if (tmp[strlen(tmp)-2]=='e' && tmp[strlen(tmp)-1]=='d')
printf ("%s", tmp);
tmp = strtok (NULL, s2);
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 11-12-2005 alle 15:00. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Ok grazie proverò
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Purtroppo ancora non stampa niente
Ho creato un file di testo con scritto just married (quindi dovrebbe stampare married), però quando faccio partire il programma con questo testo in input non stampa niente. |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXCHAR 200
void numerostringhe2(char *s1, char *s2);
int main(void){
char *s1=(char *)malloc((MAXCHAR+1)*sizeof(char));
char *s2=" ";
int i=0;
char c;
while((c=getchar())!=EOF)
s1[i++]=c;
s1[i]='\0';
numerostringhe2(s1,s2);
return 0;
}
void numerostringhe2(char *s1, char *s2){
char *tmp;
tmp=strtok(s1,s2);
while(tmp!=NULL){
if((tmp[strlen(tmp)-1]=='d') && (tmp[strlen(tmp)-2]=='e'))
printf("%s", *tmp);
tmp=strtok(NULL,s2);
}
}
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Codice:
if (strcmp((tmp + strlen(tmp) - 2), "ed") == 0) {
printf ("%s", tmp);
}
(oppure quest'altra, che fa lo stesso lavoro: Codice:
if (strcmp(&tmp[strlen(tmp) - 2], "ed") == 0) {
printf ("%s", tmp);
}
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
L'errore è qui:
Codice:
printf("%s", *tmp);
Codice:
printf("%s", tmp);
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Infatti. Il codice funzionante:
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXCHAR 200
void numerostringhe2(char *, char *);
int main(void)
{
char *s1 = (char *) malloc((MAXCHAR+1) * sizeof(char));
int i = 0;
char c = '\0';
while ((c = getchar()) != EOF) {
if (c != '\n') {
s1[i++] = c;
}
else {
s1[i++] = ' ';
}
}
s1[i] = '\0';
numerostringhe2(s1, " ");
return 0;
}
void numerostringhe2(char *s1, char *s2)
{
char *tmp;
tmp = strtok(s1, s2);
while (tmp) {
if (strcmp(&tmp[strlen(tmp) - 2], "ed") == 0) {
printf("%s\n", tmp);
}
tmp = strtok(NULL, s2);
}
}
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Grazie ora infatti funziona
In effetti sarebbe stato più semplice come aveva detto DanieleC88, ma non mi sono proprio ricordato di strcmp
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
numerostringhe2(s1, " \n");
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#18 | ||
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Quote:
ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:00.


















