cannot convert parameter 1 from const char to char*
-
Hi, hab da mal ein dummes anfängerproblem... Im folgenden soll ein Programm entwickelt werden das email-addressen auf deren gültigkeit untersucht. Leider scheitere ich bereits am anfang bei der benutzung der fremdfunktionen. Anfangs soll mit strncpy der ursprüngliche string kopiert werden, diese kopie dient anschließend zur untersuchung. Nach ein paar minuten in google bin ich dazu gekommen das es scheinbar so aussehen soll wie unten zu sehen, funktioniert natürlich nicht...
Error 2 error C2664: 'strncpy' : cannot convert parameter 1 from 'const char' to 'char *'
so also hab ich erstmal ein const vor meinen zweiten char gesetzt -> gleiches problem. Dann dachte ich vielleicht hat es irgendwas mit den zeigern zu tun und hab alle möglichen konstellationen ausprobiert, ging nicht. Kann mir jemand hier eben helfen? danke, mfg.
#include <stdio.h> #include <stdlib.h> #include <string.h> char pmail[256]="test@mich.de"; const char *validateMail(const char *pmail) { char pmailcpy[256]; strncpy(pmail, pmailcpy, 255); pmailcpy[255] = '\0'; char *strlwr(char *pmailcpy); int character='@'; char *pmailcpy; if(strchr(string, character)) return 0; else puts("Missing '@'"); }
-
planloser schrieb:
const char *validateMail([b][i]const[/i][/b] char *pmail) { char pmailcpy[256]; strncpy([b][i]pmail[/i][/b], pmailcpy, 255); ... }
Das erste Argument von strncpy gibt das Ziel an. Als Ziel übergibst du einen const char-pointer. Was glaubst du wofür das const steht?
-
Argumente vertauscht. strcpy() will den Zielzeiger zuerst, und den Quellzeiger als zweites (an eine Zuweisung angelehnt):
#include <stdio.h> #include <string.h> char pmail[256] = "test@mich.de"; int main(void) { char pmailcpy[256]; strncpy(pmailcpy, pmail, 256); pmailcpy[256] = '\0'; puts(pmailcpy); return 0; }
Statt 256 kann man bequemer auch
sizeof pmailcpy
sagen. Wenn du übrigens, wie hier, sichergestellt hast, dass genug Platz vorhanden ist, kannst du strcpy() nehmen, das geht schneller.
Edit: off by one error da oben
-
hm anscheinend bin ich zu blöd zum lesen, vielen dank, ich hab gedacht ich hätte es 1:1 übernommen. Darf ich noch kurz eine dumme frage anhängen? wie rufe ich eigene funktionen in c auf? Ich hatte nur vba aber wie c sich bis jetzt äußert geht das hier wieder ganz anders?
-
Genauso wie alle anderen Funktionen. Du rufst dort z.B. strstr() auf.
-
#include <stdlib.h> #include <stdio.h> void ausgabe(void) { printf("Hallo"); } void ausgabe2(char *string) { printf("%s", string); } int main() { ausgabe(); ausgabe2("Hallo"); }