04. november 2003 - 11:50
Der er
22 kommentarer og 1 løsning
test af 2 streng værdier
hejsa
jeg sidder og laver et prog. til at scanne en tekst fil.
jeg har fået indlæst min tekst fil.
http://www.eksperten.dk/spm/420148 nu kommer spg.
hvordan udplukker man værdier fra tekst filen.
når man kommer til en linie hvor der ex. står
from: me@me.me
hvordan får man plukket me@me.me ud.
ved man kan bruge explode ("from", XXXX); i php.
Annonceindlæg fra DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
04. november 2003 - 11:56
#1
Noget a la: char s[] = "from: me@me.me"; char tok[] = "from: "; char *p = strstr(s,tok); char buf[32]; strcpy(buf,p);
04. november 2003 - 11:59
#2
Eller: char s[] = "from: me@me.me (xxxx)"; char tok[] = "from: "; char *p = strstr(s,tok); char *p2 = strstr(p," "); char buf[32]; strncpy(buf,p,p2-p); buf[p2-p] = '\0';
04. november 2003 - 11:59
#3
Og et svar.
04. november 2003 - 12:03
#4
gider du prøve forklare hvad der sker i hver linie.
04. november 2003 - 12:08
#5
har jeg ret i at du tager "from: me@me.me (xxxxx)" og søger efter om "from: " er i linien.
04. november 2003 - 12:09
#6
strstr søgr efter en streng.
04. november 2003 - 12:10
#7
Men jeg har da iøvrigt glemt noget ! Selve token skal skippes altså: char s[] = "from: me@me.me"; char tok[] = "from: "; char *p = strstr(s,tok) + strlen(tok); char buf[32]; strcpy(buf,p); char s[] = "from: me@me.me (xxxx)"; char tok[] = "from: "; char *p = strstr(s,tok); char *p2 = strstr(p," ") + strlen(tok); char buf[32]; strncpy(buf,p,p2-p); buf[p2-p] = '\0';
04. november 2003 - 12:11
#8
Nej som det går. Det sidste skal være: char s[] = "from: me@me.me (xxxx)"; char tok[] = "from: "; char *p = strstr(s,tok) + strlen(tok); char *p2 = strstr(p," "); char buf[32]; strncpy(buf,p,p2-p); buf[p2-p] = '\0';
04. november 2003 - 12:12
#9
Man finder en pointer til token, så skipper man token (går jeg ud fra) og så har man en pointer til starten af det man leder efter. Så kopierer man enten reesten af linien til en buffer. Eller søger efter en slut streng og kopierer kun til den.
04. november 2003 - 12:56
#10
så har jeg fået det til at virke, dog tilter min borland når der kommer for mange cout ind i mit program???? skod. men tak for hjælpen.
04. november 2003 - 12:57
#11
Det lyder mystisk. Du får sendt linie skift ikke ?
04. november 2003 - 13:04
#12
Kan du sige mig hvorfor mit program tilter #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <iostream.h> int main(int argc, char *argv[]) { char buf[32]; char subjekt[] = "subjekt "; char line[1024]; FILE *f; if(argc != 2) { fprintf(stderr, "Du skal angive et filnavn\n"); return EXIT_FAILURE; } f = fopen(argv[1], "rt"); while(fgets(line, sizeof(line), f)){ printf("%s", line); char *p = strstr(line,subjekt) + strlen(subjekt); char *p2 = strstr(p," "); strncpy(buf,p,p2-p); buf[p2-p] = '\0'; cout << buf; } fclose(f); getch(); return 0; } får fejl meddelse: faulted with message: 'access violation at 0x00000000: read af adress 0x00000000'.
04. november 2003 - 14:04
#13
Har du et mellemrum efter det du piller ud af linien ? Hvis ikke så prøv varianten: char *p = strstr(line,subjekt) + strlen(subjekt); strcpy(buf,p);
09. november 2003 - 16:58
#14
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <iostream.h> #include <fstream.h> int main(int argc, char *argv[]) { char buf[100]; char subjekt[] = "subjekt: "; char line[1024]; FILE *f; if(argc != 2) { fprintf(stderr, "Du skal angive et filnavn\n"); return EXIT_FAILURE; } f = fopen(argv[1], "rt"); while(fgets(line, sizeof(line), f)){ char *p = strstr(line,subjekt) + strlen(subjekt); strcpy(buf,p); printf("%s", p); } fclose(f); getch(); }
09. november 2003 - 17:04
#15
mit program tilter ved strcpy(buf,p); p er = "" ???? skulle strstr() ikke lede efter subjekt og fylde det resterende af linien over i p????
09. november 2003 - 17:06
#16
Teknisk set returnerer den bare en pointer til der i line hvor subjekt er. Men strcpy burde virke. Jeg prøver lige hos mig.
09. november 2003 - 17:16
#17
Kode (essentielt dens amme som din): #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char buf[100],*p; char subjekt[] = "subjekt: "; char line[1024]; FILE *f; if(argc != 2) { fprintf(stderr, "Du skal angive et filnavn\n"); return EXIT_FAILURE; } f = fopen(argv[1], "rt"); while(fgets(line, sizeof(line), f)){ p = strstr(line,subjekt) + strlen(subjekt); strcpy(buf,p); printf("%s", p); } fclose(f); return EXIT_SUCCESS; } input: subjekt: a subjekt: bb subjekt: ccc output: a bb ccc
09. november 2003 - 17:18
#18
strstr(line,subjekt) + strlen(subjekt) fylder null over i min p. derfor tilter strcpy men hvad er der galt med min strstr()
09. november 2003 - 17:22
#19
Indeholder din fil subjekt på engelsk (subject) ?
09. november 2003 - 17:22
#20
Mangler kolon eller mellemrum ?
09. november 2003 - 17:23
#21
Hov - jeg har da vist hovedet under armen ! Har jeg ret i at der ikke er subjekt i alle linier ?
09. november 2003 - 17:24
#22
I så fald er det nok noget a la: p = strstr(line,subjekt); if(p != NULL) { p += strlen(subjekt); strcpy(buf,p); printf("%s", p); } du leder efter.
09. november 2003 - 17:39
#23
det har du fuldstændig ret i. har testet det med if sætningen og nu kører det bare.
Kurser inden for grundlæggende programmering