【问题标题】:why I can't get a string from getchar() [closed]为什么我无法从 getchar() [关闭]
【发布时间】:2015-05-26 11:27:04
【问题描述】:

我想通过调用函数getchar()得到一个字符串,但是有问题。下面是我的代码

int i, j, t;
char a[N], *p = argv[1];
for (i=0; i<5; a[i]=t, i++){
    if ((t = getchar()) == EOF) break;
}
a[i] = 0;

【问题讨论】:

  • “出了点问题”是一个不好的问题描述
  • t 的初始值在被赋值之前被存储。无需将其填充到for 循环中;一个简单的重新排序解决了这个问题。
  • 构建代码时会发生什么?当你运行它时会发生什么?对于某些特定的输入,预期和实际输出是什么?
  • 这是一个非常奇怪的for 循环。 :-(
  • 这有什么问题? (除了未使用的j*pargv 和未定义的N

标签: c arrays for-loop getchar


【解决方案1】:

您的代码取决于N 的值。所以,改变你的代码像

#define N 20      //my assumption

int i, t;

char a[N];   // *p = argv[1]; no relevant for this example

for (i=0; i < N-1; i++){  //check here
    if ((t = getchar()) == EOF) break;
    a[i]=t;
}
a[i] = 0;

请记住,C 中的数组索引是基于 0 的。

【讨论】:

  • 然后将0终止符添加到数组的末尾。
  • 我想知道为什么按“Enter”后它不会停止。我认为代码取决于八的N值或回车。
  • @汇创轩辕ENTER?为什么它会停在ENTER?断开条件为EOF,按CTRL+D(在linux上)。
猜你喜欢
  • 2021-05-29
  • 2016-06-12
  • 2020-01-29
  • 2013-08-11
  • 2022-01-24
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 2018-07-16
相关资源
最近更新 更多