首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元音计数不正确

元音计数不正确
EN

Stack Overflow用户
提问于 2015-05-01 07:47:03
回答 3查看 60关注 0票数 0

我正在尝试编写一个C程序来计算元音、击键和字母字符的数量。按键计数器正在工作,但元音计数器总是关闭1个元音。alpha计数器不工作。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>


int main(int argc, char *argv[])
{
  int keystrokes = 0;           //Number of keystrokes.
  int letters = 0;                  //Number of total letters.
  int vowels = 0;               //Number of vowels.
  int i = 0;
  char sentence[0];                  //Chararacter array specified to users input.

 while((sentence[i] = getchar()) != '\n')

  {
      if(sentence[i] == 'a' || sentence[i] == 'e' || sentence[i] == 'i' || sentence[i] == 'o' ||sentence[i] =='u'|| sentence[i] == 'A' || sentence[i] == 'E' || sentence[i] == 'I' || sentence[i] == 'O' ||sentence[i] == 'U' )
      {
          ++keystrokes;
          ++letters;
          ++vowels;
      }
      else
      {
          if (isalpha(sentence[i]) == 1) // if character is true
          {
              ++keystrokes;
              ++letters;
          }
          else
          {
              ++keystrokes;
              i++;
          }
      }
  }




  printf("SAMPLE OUTPUT, for EACH sentence above:\n");
  printf("Keystrokes %d \n", keystrokes);
  printf("Alpha Characters %d \n", letters);
  printf("Vowels %d \n", vowels);




  return 0;
}
EN

回答 3

Stack Overflow用户

发布于 2015-05-01 07:56:13

你在这里有很多问题。通过说char sentence[0],您实际上表示存储输入的内存为零字节。访问sentence[i]将是“越界的”,并覆盖内存的其他部分,导致未定义的行为。

首先,将char sentence[0]更改为char sentence[100]。然后仔细查看计数器的增量位置,即if/else流在程序中是什么样子的。举个例子:目前,当您有一个元音时,不会检查isalpha(),也不会检查i++

票数 2
EN

Stack Overflow用户

发布于 2015-05-01 07:54:44

你的问题是你有由内存损坏引起的未定义的行为。

代码语言:javascript
复制
char sentence[0];

它声明了一个0字符数组。只要去掉数组和i索引即可。也就是说,将char sentence[0]更改为类似于char current_char的内容,然后用current_char替换sentence[i]的所有实例。

票数 1
EN

Stack Overflow用户

发布于 2015-05-01 09:51:08

我同意Alan AU关于用get_char取代sentence的观点。我还将(isalpha(sentence[i]) == 1)更改为(isalpha(sentence[i]))

我承认我仍然是编程新手,但是您的代码并没有正确地递增字母,直到我进行了更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29979632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档