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



