如何从 C 语言的输入中读取字符数?

问题描述 投票:0回答:4

我正在尝试读取字符数,包括空格。 我使用 scanf 函数来检查使用 %c 的字符。另外,我将如何将输入存储到数组中?

#include <stdio.h>

int main(void) {
  char n, count= 0;

  while (scanf("%c", &n) != EOF) {
    count = count+1;
  }  

  printf("%d characters in your input \n", count);

  return 0;
}

当我测试输入(带空格)时,例如 abcdefg 它不打印任何东西。

arrays c input char character
4个回答
2
投票

定义 MAX_CHAR 并在循环中检查它可以防止无效的内存写入。 请记住,如果您想打印或使用 char 数组,则数组的最后一个字节应保留为 ' '。

#include <stdio.h>
#define MAX_CHAR 100

int main(void) {

char n[MAX_CHAR]={0}, count= 0;

while((count!=MAX_CHAR-1)&&(scanf("%c",&n[count])==1))
{
    if((n[count]=='\n')){
        n[count]=0;
        break;
    }
    count++;
}

printf("%d characters in your input [%s]\n", count, n);

return 0;
}

1
投票

scanf
当到达文件末尾时确实返回 EOF。但是为了让您看到这种情况的发生,您应该在调用程序时为程序提供一个文件输入,如下所示:

./a.out < input.txt

在里面

input.txt
你可以输入任何你想要的文字。但如果你想在命令行中工作,你应该阅读直到找到
\n

#include <stdio.h>

int main(void) {
  char n, count = 0;
  scanf("%c", &n);
  while (n != '\n') {
    count = count+1;
    scanf("%c", &n);
  }  

  printf("%d characters in your input \n", count);

  return 0;
}

如果要将输入存储在数组中,则必须知道输入的大小(或至少可能的最大大小)

#include <stdio.h>

int main(void) {
  char n, count = 0;
  char input[100]; //the max input size, in this case, is 100
  scanf("%c", &n);
  while (n != '\n') {
    scanf("%c", &n);
    input[count] = n; //using count as the index before incrementing
    count = count+1;
  }  

  printf("%d characters in your input \n", count);

  return 0;
}

此外,如果不知道输入的大小或最大大小,则必须动态更改

input
数组的大小。但我认为现在这对你来说有点先进。


0
投票

我不知道你要求什么,但我正在搜索一个程序,其中用户输入一个字符串,当他/她在完成字符串后按 Enter 时,程序会停止并告诉他该字符串中的字符数/她进来了。这对我有用。

#include <stdio.h>
int main(void){
char n, count= 0;

while (scanf("%c", &n) && n != '\n') 
{
count = count+1;
}  

printf("%d characters in your input \n", count);

return 0;
}

-1
投票

您的

printf
不会打印任何内容,因为运行时无法到达它。你的代码永远在
while
循环中循环

  while (scanf("%c", &n) != EOF) {
    count = count+1;
  }

因为在这种情况下

scanf
不会返回
EOF

© www.soinside.com 2019 - 2024. All rights reserved.