C:使用字符串数组时输出空白



所以我试图创建一个用户名和密码的管理员使用c语言,在这里的代码索引数组inpstring确定什么是用户名和密码,为偶数(和0)数字是用户名,奇数是密码。

<代码>以前
#include <stdio.h>
#include <string.h>
struct user {
const char *user;
const char *pw;
};
struct user users[] = {
{ "Carl01", "SVm6u&N591s2" },
{ "Devoth754", "eeKS7@8%0@T6" },
{ "David439", "l$z7eqV2aD00" },
{ "Matt208", "h9Je2#Ri3or$" }
};
int
main(void)
{
for (size_t i = 0;  i < sizeof(users) / sizeof(users[0]);  ++i) {
struct user *user = &users[i];
printf("User: %s Pw: %sn",user->user,user->pw);
}
return 0;
}

当我试图运行代码时,没有输出,只是空白。我认为listofadmins函数会将inpstring数组中的字符串复制到主程序数组str。你知道问题出在哪里吗?

有几个问题…

  1. 使用2D数组是有问题的。最好创建一个Listofadmins
  2. charchar *中做strcpy阶梯是不必要的复杂
  3. 使用固定大小的inpstring[][50]数组代替inpstring[][100]数组使事情变得复杂。

下面是一些简化的代码:

#include <stdio.h>
#include <string.h>
void listofadmins(int index, char inpstring[][100]){
if(index == 0){
strcpy(inpstring[0], "Carl01");
strcpy(inpstring[1], "SVm6u&N591s2");
} else if(index == 1){
strcpy(inpstring[2], "Devoth754");
strcpy(inpstring[3], "eeKS7@8%0@T6");
} else if(index == 2){
strcpy(inpstring[4], "David439");
strcpy(inpstring[5], "l$z7eqV2aD00");
} else if(index == 3){
strcpy(inpstring[6], "Matt208");
strcpy(inpstring[7], "h9Je2#Ri3or$");
}
}
void main()
{
int j, k = 0, y = 1;
char str[100][100];
for(j = 0, k, y; j < 4; j++, k += 2, y += 2){
listofadmins(j, str);
printf("%sn%s", str[k], str[y]);
}
}

程序输出:

Carl01
SVm6u&N591s2Devoth754
eeKS7@8%0@T6David439
l$z7eqV2aD00Matt208
h9Je2#Ri3or$

我更改了'listofadmins'的调用参数,以匹配'str'将str[10]转换为struct0的声明。当调用函数时,我删除了'str'后面的括号,这样CC_11就变成了CC_12。

结果代码如下

PP_6输出为:

PP_7我可能会建议改变打印更好的可读性。希望我能帮上忙。

最新更新