私はuserIDとpaswdと何らかのエラーチェックを解析する関数を使用しています。この関数は私のmain()から呼び出されます...しかし、実行されると、私のUserIDとPswdの最初の4文字だけが正常に抽出されます。私はCプログラミングの新人で、C#から来ています。どこに間違っているのか分かりません。これはかなり簡単に、誰かが正しい方向に私を指すことができますか?私は外部関数を使用してから、私のメインFUNCそれが動作中のすべてのコードをお持ちでない場合は 関数に文字配列を渡すCプログラミング
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);
}
はまた、ただ、指摘します。
EDIT: - :私はそれは...それは常に私のポインタのサイズを読んでいたことが予想ほど
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 doesntの仕事 - 問題を考え出した
デフォルトでは4文字です。
によってオフを与えました –
'function': 'char *'は 'char **'からの間接的なレベルが異なります – Philo
'strncpy':正式なパラメータと実際のパラメータの異なるタイプ1 – Philo