C语言 入门问题,怎样确保在获取字符时数量不会过界
我要编写一段关于身份证号码判断的代码。但是在一开始的获取字符时就束手无策了。程序代码:
#include"stdlib.h" #include"string.h" #include"stdio.h" int main() { int num; scanf("%d",&num); char m[100][19]; for(int i=0;i<num;i++){ scanf("%s",m[i]); m[i][19]=0; } {for(int i=0;i<num;i++){ printf("%s\t",m[i]); }} }
这里,我希望程序可以自动截取到17位为止的字符。因为在存放数据的时候C语言的规则是自动从指定首地址开始存放,并覆盖原有数据。我尤其注重尝试当我第一个m的值输入超过17位时,它就会导致,后面的测试语句输出时这第一个字符串长度超过17个,不多不少,正好就是我输入的m的长度,只是他超过17位的数据是被第二个m的值覆盖过了的。
我在程序里加了一句m[i][18]=0就是希望在这个位置重新赋值,用结束符合来终止程序访问。但从运行效果来看,没有起作用。
我也从网路上找了但没掌握方法,没有找到相关资料。
(本账号是刚刚申请注册的。所以没办法给分。。性子急,在线等。)by the way,我是自学编程的,想找个适合的论坛、杂志、网站或交流群啥的,都可以推荐。
[此贴子已经被作者于2015-10-27 19:03编辑过]