> 文章列表 > C语言怎么控制输入?c输入格式是?

C语言怎么控制输入?c输入格式是?

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下吧?不是释放了就立刻归还给系统的。

释放了就是已经还给系统了, 至于任务管理器中还显示占用那么多, 那只是系统性能计数器的问题.