magix2003
28-05-2007, 16:25
Ciao a tutti,
ho un problema e non riesco a venirne a capo. In un file di testo scritto da me ci sono dei nomi di syscall separati da una virgola. Io devo leggere questi nomi e poi fare dei controlli su una struttura. Questo è il codice:
Lista *ListSearchName(Lista *head, char *v) {
char *temp = NULL;
temp = malloc(strlen(v)-1);
strncpy(temp, v, strlen(v)-1);
printf("%s", temp);
Lista *p = head;
while (p != NULL) {
if (strcmp(p->name, temp) == 0) {
return p;
}
p = p->next;
}
return NULL;
}
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage: %s <a black list file>\n", argv[0]);
exit(1);
}
if (parseFile()) {
perror("Problem while parsing the file");
exit(1);
}
FILE *fp;
fp = fopen(argv[1], "r");
if (fp == NULL) {
perror("Error while opening the black list file\n");
exit(1);
}
char *name = NULL;
int nread;
size_t n = 0;
Lista *p;
char *temp = NULL;
size_t len = 0;
ssize_t read;
while (((read = getdelim(&name, &len,',', fp)) != -1)) {
p = ListSearchName(root, name);
if (p != NULL) {
p->bl = 1;
}
}
fclose(fp);
}
Il contenuto del file è questo:
Quando lancio il programma, la parola write viene processata bene e sullo schermo viene scritto esattamente write, però per le altre 2 succede una cosa strana. L'output è il seguente:
write
readl_pwait
linkP�
L'ultimo e il penultimo sono assurdi e non riesco a capire il motivo per il quale appaiano quei caratteri...
Help Please
ho un problema e non riesco a venirne a capo. In un file di testo scritto da me ci sono dei nomi di syscall separati da una virgola. Io devo leggere questi nomi e poi fare dei controlli su una struttura. Questo è il codice:
Lista *ListSearchName(Lista *head, char *v) {
char *temp = NULL;
temp = malloc(strlen(v)-1);
strncpy(temp, v, strlen(v)-1);
printf("%s", temp);
Lista *p = head;
while (p != NULL) {
if (strcmp(p->name, temp) == 0) {
return p;
}
p = p->next;
}
return NULL;
}
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Usage: %s <a black list file>\n", argv[0]);
exit(1);
}
if (parseFile()) {
perror("Problem while parsing the file");
exit(1);
}
FILE *fp;
fp = fopen(argv[1], "r");
if (fp == NULL) {
perror("Error while opening the black list file\n");
exit(1);
}
char *name = NULL;
int nread;
size_t n = 0;
Lista *p;
char *temp = NULL;
size_t len = 0;
ssize_t read;
while (((read = getdelim(&name, &len,',', fp)) != -1)) {
p = ListSearchName(root, name);
if (p != NULL) {
p->bl = 1;
}
}
fclose(fp);
}
Il contenuto del file è questo:
Quando lancio il programma, la parola write viene processata bene e sullo schermo viene scritto esattamente write, però per le altre 2 succede una cosa strana. L'output è il seguente:
write
readl_pwait
linkP�
L'ultimo e il penultimo sono assurdi e non riesco a capire il motivo per il quale appaiano quei caratteri...
Help Please