关于C的问题:有关在读入空输入行时,程序退出!!!

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:37:59
我的理解是敲回车就是空输入行,但由于我定义了数组存放键盘输入的东西scanf("%s",type);,我想在这句后面加if(*p=='\0')break;跳出操作,但如果直接回车程序无法下去,也无法判断是空输入行,怎样才能做到在读入空输入行时,程序退出????????????????
day9981这样根本不能循环,你前面如果运行总会打回车,然后最多运行一次

楼上的,别人要的是空行退出,不是空格退出!

楼主,用scanf读去字符串,是没办法读入空行的。因为scanf在刚开始尝试读取的时候会忽略掉所有空字符(包括空格,换行(由回车生成),和制表符),直到读到非空字符。建议你把scanf换成fgets,
char * fgets(char * s, int n, FILE * stream);
这个函数读入三个参数,第一个是一个已经分配好空间的字符串指针,第二个参数是要读取的字符串的长度,第三个文件指针(这里你就把第三个参数固定为stdin就可以了,因为一般都是从键盘标准输入流输入)。如果操作成功,它返回s.第二个参数n,以防万一,你可以取大一点的值(比如1024),当然不能超过你的第一个参数分配的空间的大小,它的单位是char个数,就是多少bytes. 这个函数有一个好处,只要你输入了换行(就由你打回车生成), 在不超过你给定的大小的前提下,它把换行符'\n'也读进去。这样你就能在他后面加入判断是否空行的而退出循环的语句了。像这样(我假设你的是一个for循环):
for ( ... ; ... ; ... ) {
fgets(type, 1024, stdin);
if ( *type == '\n' )
break;
...
}

楼主,你声明一个char型的指针数组,
char * strs[9], 里面装已经分配号空间的字符串指针,然后用循环往里面读字符串
for(i = 0; i < 9; i++) {
fgets(strs[i], 1024, stdin);
if ( *strs[i] == '\n' )
break;
...
}

楼主,你又不把你的代码给出来,别人也就按照你的描述再结合自己的理解给你提些建议。

scanf("%s",type);
只要你定义的数组type里元素的个数大于等于输入的字