C语言怎么控制输入?c输入格式是?
但是如何控制输入?
即只能输入大于等于1的整数,输入其他任何元素都报错(字符、 实型、负数等),怎么控制?
------解决方案--------------------
使用头文件ctype.h中的isdigit
if(isdigit(n)){
//......
}
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
仅供参考
#include
int main() {
int IP[4];
int i;
char c;
printf("请输入一个ip地址:");fflush(stdout);
while (1) {
rewind(stdin);
if (5==scanf("%d.%d.%d.%d%c",&IP[0],&IP[1],&IP[2],&IP[3],&c)) {
if (0<=IP[0] && IP[0]<=255
&& 0<=IP[1] && IP[1]<=255
&& 0<=IP[2] && IP[2]<=255
&& 0<=IP[3] && IP[3]<=255
&& '\n'==c) {
break;
} else printf("输入的ip地址格式不对!\n请重新输入:\n");
} else printf("输入的ip地址格式不对!\n请重新输入:\n");
}
for (i=0;i<4;i++) {
printf("IP[%d]=%d\n",i,IP[i]);
}
return 0;
}
如上,运行后占用内存约600M,执行delete[]和free后只降了一点,还会占用很大内存。希望有哪位前辈或者大神给指点指点,多谢。
------解决方案--------------------
mingw-g++ win下测试无问题。
是在linux下吧?不是释放了就立刻归还给系统的。
释放了就是已经还给系统了, 至于任务管理器中还显示占用那么多, 那只是系统性能计数器的问题.