【问题标题】:can anyone help me? My code is not taking input [closed]谁能帮我?我的代码没有输入[关闭]
【发布时间】:2021-06-30 17:51:16
【问题描述】:

我不知道为什么,但我的代码没有输入....我哪里做错了???

运行后只打印这个:

Type your input (press enter to save and exit).????️
Done, your file is saved successfully????️

我的代码是:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *fpp;
    char Entry;
    char sid;
    
    fpp = fopen("sid","w");
    
    if (fpp == NULL)
    {
        printf("Sorry????️ file not created\n");
        exit(0);
    }
    
    printf("Type your input (press enter to save and exit).????️\n");
    while (1)
    {
        putc(Entry,fpp);
        
        if(Entry =='\n')
            break;
    }
    printf("Done, your file is saved succesfully????️\n");
    fclose(fpp);
    return 0;
}

【问题讨论】:

  • 您没有使用任何函数来读取输入。而且看起来你在这里有一个额外的;if(Entry =='\n');
  • putc 用于输出,而不是输入。
  • 开启编译器警告。您会收到一些潜在错误的通知,您应该尝试解决这些错误,包括您尚未在帖子中发现的错误。
  • @Pushp Ratan 我没有看到任何输入。
  • @Barmar 不是if(...)break 之间的分号本质上使 if 无操作吗?因此break 在循环第一次运行时被执行?

标签: c linux


【解决方案1】:

是的,伙计们,我使用了 scanf() 而不是 putc()。我的在线导师让我写这个......

while((ch=getchar())!='\n')
    {
        putc(Entry,fpp);
    }

我使用了那个....但是现在我使用了这个代码并且它工作了。

while (1)
    {
        scanf("%c",&Entry);
        
        if(Entry =='\n')
            break;
    }

【讨论】:

  • 更好的while ((ch = getchar()) != '\n' &amp;&amp; ch != 'EOF') { ... } 可以防止用户生成手动EOF 来取消输入。
  • 请把关于导师指导的部分从答案移到问题。 (ch=getchar()) 部分发生了什么?
【解决方案2】:

为了从未回答的问题列表中排除这个问题,我从 cmets 编译了一个答案。
感谢评论者:MikeCAT,0x5453,Vlad,Daniel Farrell。 其他评论者提供了明智的意见,但我不认为这是解决方案的直接部分。

您的问题不是很具体,您对显示的输出感到困惑,所以这是我的猜测,以及解释:

  • 为什么您提供的任何输入都不会对程序行为产生任何影响?

因为您从不接受任何输入。看来您打算使用putc(Entry,fpp); 读取输入,但作为 0x5453 cmets

putc用于输出,不是有效输入。

即没有输入读取函数调用没有输入。

  • 为什么会出现Done, your file is saved successfully?️?它应该只出现在'\n' 输入之后。

因为您的无限循环中有一个无条件的break;
这可能并不明显,但正如 Daniel Farrell 所说:

...if(...)break 之间的分号本质上使 if 成为无操作...因此break 在循环第一次运行时被执行。

即无条件立即中断,循环结束,输出。程序结束。

【讨论】:

  • 所有评论者,如果我歪曲你的意见或者你想让我从我的回答中删除它,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 2017-03-27
  • 2011-05-03
  • 2019-08-28
  • 1970-01-01
  • 2020-10-29
相关资源
最近更新 更多