注册 登录
编程论坛 C语言论坛

让函数在读取到空格字符,制表符,换行符的时候停止输入,可是却无法停止输入

hffjhhh 发布于 2020-06-07 23:51, 1855 次点击
让函数在读取到第一个空格字符,制表符,换行符的时候停止输入,可是却无法停止输入,什么原因?如何修改?代码如下:
程序代码:
#include"stdio.h"
char *function(char a[],int n){
    int i;
    i=0;
    a[i]=getchar();
    while(a[i]!=' '||a[i]!='    '||a[i]!='\n'){
        a[++i]=getchar();   
    }
    return a;
}
int main(void){
    char b[100];
    char *c;
    c=function(b,10);
    puts(c);
    return 0;
}
3 回复
#2
吹水佬2020-06-08 07:48
char *function(char* a, int n)
{
    int i;
    for (i=0; i<n; ++i)
    {
        a[i]=getchar();
        if (a[i]==' ' || a[i]=='\t' || a[i]=='\n')
            break;
    }
    a[i] = '\0';
    return a;
}
#3
lin51616782020-06-08 20:41
getchar 这个函数默认是在回车之后才开始执行的
如果你想按下空格就结束执行 一般不使用这个函数(非要用也不是完全不可能 但没必要)
你可以考虑用getch()
这是非标准函数 不同环境可能名字不一样 比如 _getch()
你自己试试看
#4
bcbbcclbbc2020-06-09 10:49
while(a[i]!=' '||a[i]!='    '||a[i]!='\n')

这个语句中的逻辑你显然没弄懂
首先while(1)则循环,while(0)则退出
然后就是当“||”运算符两端都为0时,式子结果才为0
你这个语句只有当a[i]同时为空格,换行,制表符时,才能退出循环
应该用使用“&&”
1