c - 如何使用 fgetc() 仅捕获字母并将输入存储到数组中

标签 c arrays

我正在尝试编写一个索引程序,它将从用户那里获取输入并将其存储到一个数组中,然后继续计算单词的出现次数。

用户输入:hello@#world I,I,I am@#!stuck201

hello 1 出现 1 次

世界 1 出现 1 次

我出现过3次

am出现1次

卡住发生1次

因此,正如您所看到的,它会将包含由任何内容分隔的字母的任何内容计为一个单词。

(我对如何检查输入中除字母以外的任何内容感到困惑,我正在考虑使用 ASCII 代码,但必须有更好的方法,如果你能为我设置正确的方向,非常感谢。)

在开始该程序之前,我试图让 I/O 正常工作,但遇到了困难。实际的程序将要求我使用二维数组,但如果您能帮助我处理这段代码,我将不胜感激。

#include <stdio.h>

int main()
{

        char array[64];
        int i=0, j, input;

        printf("Please enter an input:");

        input==fgetc(stdin);
        while(input != " ")
        {
                array[i]==input;
                i++;
                input==fgetc(stdin);
        }

        for(j=0;j<10;j++)
        {

                printf("You entered:%c",array[j]);


        }
}

编译后,它给我一个警告“12:14警告:指针和整数之间的比较”

此代码的输出:::

请输入一个输入:(我输入输入)ehehasd world hello(输入)

然后它就位于空白光标处,我必须使用 CTRL C 退出

我希望这段代码只获取由空格分隔的用户输入,将其存储到数组中,然后打印出用户输入的内容。我做错了什么?

最佳答案

检查isalpha ,它有一些关于什么是信件的细则,但它可能适合您的情况。

如果您不想自己执行循环,另一种方法是使用正则表达式。制作一个仅返回字母序列的正则表达式相当容易。

关于c - 如何使用 fgetc() 仅捕获字母并将输入存储到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27084127/

相关文章:

c - fgets()段错误

C使用malloc和复制数组

C 中字符串中特定字母的大写

c - 当我使用错误的格式说明符时会发生什么?

c - 给定月份的最后一天

c - 一些 fgets 不能在 C 编程中工作

javascript - 将属性添加到 JavaScript 数组

arrays - Swift:在 Core Data 中存储自定义类的数组

arrays - Pascal/Delphi 动态数组作为参数

c - 从多个线程写入一个数组