Ich benutze eine Funktion, um durch Benutzer-ID, und PASWD und einige Fehlerprüfung zu analysieren. Die Funktion wird von meinem main() aufgerufen ... Allerdings werden nur die ersten 4 Zeichen meiner UserID und Pswd erfolgreich extrahiert. Ich bin neu in C-Programmierung und komme aus C# Ich bin mir nicht sicher, wo ich falsch liege. Das sollte ziemlich einfach sein, kann mir jemand in die richtige Richtung zeigen?C Programmierung Übergabe eines Char-Array in eine Funktion
static void func1(int argc, char *argv[], char *UserID[30], char *Psw[30])
{
strncpy(UserID, argv[1], sizeof(UserID));
strncpy(Psw, argv[2], sizeof(Psw));
}
int main(int argc, char *argv[])
{
char UserID[30];
char Psw[30];
func1(argc, argv, UserID, Psw);
}
auch nur darauf hinweisen, wenn ich nicht die externe Funktion verwenden und den gesamten Code in meinem Haupt-func haben, dann funktioniert es.
EDIT: -
die Frage Figured aus: -
static void func1(int argc, char *argv[], char *UserID, char *Psw)
{
strncpy(UserID, argv[1], UserIDMaxSize);
strncpy(Psw, argv[2], PswMaxSize);
}
int main(int argc, char *argv[])
{
char UserID[UserIDMaxSize + 1]; /* max val defined in a header file */
char Psw[PswMaxSize + 1]; /* max val defined in a header file */
func1(argc, argv, UserID, Psw);
}
sizeof funktioniert nicht ganz, wie ich es erwartet .. es wurde die Größe meines Zeiger zu lesen, die immer 4 Zeichen standardmäßig.
Hat der Compiler geben Sie alle Warnungen , was waren sie, und warum haben Sie sie ignoriert? –
'Funktion': 'char *' unterscheidet sich in Ebenen der Indirektion von 'char **' – Philo
'Strncpy': verschiedene Typen für formale und tatsächliche Parameter 1 – Philo