C编程,将char数组传递给函数

菲洛

我正在使用一个函数来通过userID,paswd和一些错误检查进行解析。该函数是从我的main()中调用的...但是,执行该函数时,仅成功提取了UserID和Pswd的前4个字符。我是C编程的新手,来自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);
}

另外,要指出的是,如果我不使用外部函数,而是将所有代码都放在主函数中,那么它将起作用。

编辑:-

找出问题:

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不能按我预期的那样工作..它正在读取指针的大小,默认情况下,该大小始终为4个字符。

chux-恢复莫妮卡

将数组大小传递给函数

static void func1(int argc, char *argv[], char *UserID, size_t UserIDSize, 
    char *Psw, size_t PswSize)
{
   if (argc> 1) strncpy(UserID, argv[1], UserIDSize);  
   if (argc> 2) strncpy(Psw, argv[2], PswSize);  
} 

int main(int argc, char *argv[])
{
   char UserID[30] = {0};     
   char Psw[30] = {0};
   func1(argc, argv, UserID, sizeof UserID, Psw, sizeof Psw);
}

为了确保目标数组以null字符终止,建议strncat()->“始终在结果后附加一个终止null字符”。strncpy()有太多问题,它并不总是导致数组包含空字符。

static void func1(int argc, char *argv[], char *UserID, size_t UserIDSize, 
    char *Psw, size_t PswSize) {
   UserId[0] = '\0';
   // if (argc> 1) strncat(UserID, argv[1], UserIDSize);  
   if (argc> 1) strncat(UserID, argv[1], UserIDSize - 1);  
   Psw[0] = '\0';
   // if (argc> 2) strncat(Psw, argv[2], PswSize);  
   if (argc> 2) strncat(Psw, argv[2], PswSize - 1);  
} 

[编辑]

更正的代码-减1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将char数组传递给函数C ++

来自分类Dev

将char数组的数组传递给函数

来自分类Dev

将char数组的数组传递给函数

来自分类Dev

C18将char数组传递给函数

来自分类Dev

将指针传递给char数组作为函数的参数-C

来自分类Dev

无法将char数组传递给函数

来自分类Dev

将char指针数组传递给函数

来自分类Dev

将char数组的指针传递给函数

来自分类Dev

将char指针数组传递给函数

来自分类Dev

将char数组传递给函数

来自分类Dev

将char指针/数组传递给函数

来自分类Dev

将char指针传递给C函数

来自分类Dev

将char *传递给C中的函数后,如何指向预期的char数组?

来自分类Dev

将char *传递给C中的函数后,如何指向预期的char数组?

来自分类Dev

将char数组传递给函数内的struct数组

来自分类Dev

C ++直接将数组传递给函数

来自分类Dev

将数组传递给C中的函数

来自分类Dev

将C数组传递给Rust函数

来自分类Dev

C ++将指针数组传递给函数

来自分类Dev

将数组传递给类函数C ++

来自分类Dev

如何将Swift字符串数组传递给带有char **参数的C函数

来自分类Dev

如何将char数组作为字节从C JNI函数传递给Java方法[]

来自分类Dev

OpenvVMS从pascal将char参数数组传递给C函数

来自分类Dev

如何将char数组从C JNI函数作为字节传递给Java方法[]

来自分类Dev

如何在C中将char数组传递给函数

来自分类Dev

如何从C#将const char *传递给C函数?

来自分类Dev

将数组传递给函数

来自分类Dev

将数组传递给函数

来自分类Dev

将const char *传递给C中的函数