işlevine geçirme programlaması UserID ile ayrıştırmak için bir işlev kullanıyorum ve bazı hata denetimleri. Fonksiyon benim ana() den çağrılır ... Ancak, yalnızca UserID ve Pswd'nin ilk 4 karakteri çalıştırıldığında başarıyla çıkarılır. C-programlamada yeniyim ve C'den geliyorum. Nereye yanlış gittiğimi bilmiyorum. Bu oldukça kolay olmalı, birisi bana doğru yönde işaret edebilir mi? Ben harici işlevini kullanın ve sonra benim ana fonk çalıştığını tüm kodu yoksa C Bir char dizilimini
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);
}
Ayrıca sadece işaret etmek.
DÜZENLEME: -
sorunu çözdü: -
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 Ben .. her zaman benim işaretçisinin boyutunu okuyordu bekleniyor oldukça olarak çalışmıyor Varsayılan olarak 4 karakter.
tarafından kapalı mı verdi , ne vardı ve neden onları görmezden geldin? –
'function': 'char *', 'char **' 'den indirekt seviyelerinde farklıdır – Philo
' strncpy ': resmi ve gerçek parametre 1 için farklı tipler 1 – Philo