Getchar在c中只保存1个字符
Getchar saving only 1 character in c
所以,我先说说,这可能会让我的问题被记下来,但我没有太多要解决的问题,所以这可能是一个不完整的问题,但我完全被困住了.我正在用 C 编写一个程序,以便能够计算用户提供的字符的出现次数。我目前正在尝试在 while 循环中使用 getchar() 保存字符,当我尝试显示结果时,它会在循环内为我提供整个输入,但是当它退出循环时,它会保存最后一个 char 字符(我理解为什么这样做,而不是如何解决它)。注意:此代码包含不需要回答此问题的额外部分,这些部分用于稍后在我的代码中。 :)
这是我当前的代码 (3/12/18),很抱歉我不能更彻底:
#include<stdio.h>
#include<stdbool.h>
#include<string.h>
#define N 26
int main(void) {
char ch, index;
int count[N] = {0}, tolower(int ch);
printf("Enter a sentence (end by '.'): \n");
while(ch != '.') {
ch = getchar();
putchar(ch); \print testing to see where the characters are "leaving"
}
printf("%c", ch); \print testing to see if the characters go past the loop
}
您需要按以下顺序执行循环事件:
- 读取一个字符
- 如果是
'.'
或 EOF
则中止循环
- 写字
- 转到 1
此外,您需要使用 int
来存储 getchar()
的 return 值,否则您无法检查 EOF
(这不是字符)。
如果您将这些步骤直接翻译成代码,您将得到:
int ch;
for (;;)
{
ch = getchar();
if ( ch == '.' || ch == EOF )
break;
putchar(ch);
}
尽管将前两个语句组合成循环条件是一种常见的习惯用法:
int ch;
while ( (ch = getchar()) != '.' && ch != EOF )
putchar(ch);
所以,我先说说,这可能会让我的问题被记下来,但我没有太多要解决的问题,所以这可能是一个不完整的问题,但我完全被困住了.我正在用 C 编写一个程序,以便能够计算用户提供的字符的出现次数。我目前正在尝试在 while 循环中使用 getchar() 保存字符,当我尝试显示结果时,它会在循环内为我提供整个输入,但是当它退出循环时,它会保存最后一个 char 字符(我理解为什么这样做,而不是如何解决它)。注意:此代码包含不需要回答此问题的额外部分,这些部分用于稍后在我的代码中。 :) 这是我当前的代码 (3/12/18),很抱歉我不能更彻底:
#include<stdio.h>
#include<stdbool.h>
#include<string.h>
#define N 26
int main(void) {
char ch, index;
int count[N] = {0}, tolower(int ch);
printf("Enter a sentence (end by '.'): \n");
while(ch != '.') {
ch = getchar();
putchar(ch); \print testing to see where the characters are "leaving"
}
printf("%c", ch); \print testing to see if the characters go past the loop
}
您需要按以下顺序执行循环事件:
- 读取一个字符
- 如果是
'.'
或EOF
则中止循环
- 写字
- 转到 1
此外,您需要使用 int
来存储 getchar()
的 return 值,否则您无法检查 EOF
(这不是字符)。
如果您将这些步骤直接翻译成代码,您将得到:
int ch;
for (;;)
{
ch = getchar();
if ( ch == '.' || ch == EOF )
break;
putchar(ch);
}
尽管将前两个语句组合成循环条件是一种常见的习惯用法:
int ch;
while ( (ch = getchar()) != '.' && ch != EOF )
putchar(ch);