这里使用一个简单的账号密码输入并打印的程序来分析。
输入
#include <stdio.h>
int main()
{
char account[20] = { 0 };
int password[20] = { 0 };
printf("请输入账号:");
scanf("%s", account);
printf("请输入密码:");
scanf("%d", password);
return 0;
}
注意这里account是字符数组,而password是整型数组(实际上无论是account还是password使用字符数组都是更为合适的,但这里为举例password使用的整型数组),如果这样输入的话会出现如下情况:
在account里输入的123分别位于account[0]、]account[1]、account[2],而在password里的123则全部位于password[0]中。
为让1 2 3 分别位于password数组不同位置中,这里换成逐位输入的方法:
#include <stdio.h>
int main()
{
char account[20] = { 0 };
int password[20] = { 0 };
printf("请输入账号:");
scanf("%s", account);
printf("请逐位输入密码:");
int i = 0;
for (i = 0; i < 20; i++)
{
scanf("%d", &password[i]);
}
return 0;
这个方法的弊端较为明显,比如会强制要求输入20个整型,如果采取动态数组或者链表的形式,就可以自己控制输入的个数,但由于本篇是纯新手向,所以仍然采取逐位输入的方法。
打印
#include <stdio.h>
int main()
{
char account[20] = { 0 };
int password[20] = { 0 };
printf("请输入账号:");
scanf("%s", account);
printf("请逐位输入密码:");
int i = 0;
for (i = 0; i < 20; i++)
{
scanf("%d", &password[i]);
}
printf("账号:%s\n密码:%s\n", account, password);
return 0;
}
在打印password时,如果输出类型误使用了%s,由于password本身是整型数组,所以打印出来的是第一个元素的ASCII码对应的符号,而如果输出类型为%d
#include <stdio.h>
int main()
{
char account[20] = { 0 };
int password[20] = { 0 };
printf("请输入账号:");
scanf("%s", account);
printf("请逐位输入密码:");
int i = 0;
for (i = 0; i < 20; i++)
{
scanf("%d", &password[i]);
}
printf("账号:%s\n密码:%d\n", account, password);
return 0;
}
也是不能实现打印password中所有内容的,只有使用逐位打印的方法,才能将password中的所有内容全部打印出来。
#include <stdio.h>
int main()
{
char account[20] = { 0 };
int password[20] = { 0 };
printf("请输入账号:");
scanf("%s", account);
printf("请逐位输入密码:");
int i = 0;
for (i = 0; i < 20; i++)
{
scanf("%d", &password[i]);
}
printf("账号:%s\n", account);
i = 0;
for (i = 0; i < 20; i++)
{
printf("%d",password[i]);
}
return 0;
}
tip:
建议在需要实现类似的功能的时候,都使用字符串形式,能减少很多麻烦。