我创建了一个C程序,它逐个读取一个字符,并确定它是否是元音,数字,标点符号等。
用户可以选择通过键盘或文本文件输入字符。
第一部分工作正常,并按预期完成所有操作,但是,当我运行该程序并选择“从文件读取”选项时,它只是在“ else if”中打印出语句,而完全无法在文本文件中读取。
我将文本文件保存在Visual Studio 2015目录的'Source Files'文件夹中,我的代码如下(有问题的问题区域靠近底部):
#include "stdafx.h"
#include
#include
#include
FILE *pInputFile;
FILE *pOutputFile;
int answer = 0;
int chr = 0;
int numLowerCaseVowels = 0;
int numUpperCaseVowels = 0;
int numPunctuationChars = 0;
int numNumericals = 0;
int *pCharPointer;
int previousValue = 0;
int main()
{
// ##### KEYOBARD OR FILE INPUT #####
printf("\nKEYBOARD OR FILE INPUT?\n");
printf("Press 'k' for keyboard, 'f' for file.\n");
answer = _getch();
if (answer == 'k')
{
printf("You selected keyboard.\n\n");
printf("Enter a character.\n");
// ##### KEYBOARD INPUT #####
while ((chr = _getch()) != '\r')
{
pCharPointer = &chr;
printf("%c", chr);
// Determine if input is lower/upper case vowel.
switch (chr)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf(" Lowercase Vowel.");
numLowerCaseVowels++;
break;
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
printf(" Uppercase Vowel.");
numUpperCaseVowels++;
break;
default:
break;
}
//Determine if char is punctuation.
if (_istpunct(chr))
{
printf(" Punctuation Character.");
numPunctuationChars++;
}
//Determine if char is numeric.
if (iswdigit(chr))
{
printf(" Numeric Character.");
numNumericals++;
}
//Determine if char is duplicate character.
if (previousValue == chr)
{
printf(" Duplicate Character.");
previousValue = *pCharPointer;
}
else
{
previousValue = *pCharPointer;
}
printf("\n");
}
}
// ##### PROBLEM AREA #####
else if (answer == 'f')
{
printf("You've chosen file.\n\n");
fopen_s(&pInputFile, "Text.txt", "r");
chr = getc(pInputFile);
while ((chr = getc(pInputFile)) != EOF)
{
printf("%c", chr);
}
fclose(pInputFile);
}
else
{
printf("Invalid Input. Exiting...\n");
exit(1);
}
// ##### ANALYSIS #####
printf("\nNumber of lowercase vowels: %d\n", numLowerCaseVowels);
printf("Number of uppercase vowels: %d\n", numUpperCaseVowels);
printf("Number of punctuation characters: %d\n", numPunctuationChars);
printf("Number of lowercase vowels: %d\n\n", numNumericals);
return 0;
}
对不起代码量,我认为最好包含整个源代码。
它实际上还没有对文本文件中的字符进行任何分析,我只是试图进入阶段,它将首先实际读取文件。 任何帮助,将不胜感激。