【发布时间】:2019-08-31 10:05:35
【问题描述】:
我正在为一门课程开发一个程序,该程序需要读取用户输入的单行并计算该行中每个字母的数量。每个字母的数量放在一个数组中。例如,如果用户输入“Apple”,程序应将 1 a、2 ps、1 l 和 1 e 放入计数数组中。我的问题是我的教授说我不能在程序中使用字符串。我不确定如何存储多个字符,以便 scanf 可以在不使用字符串的情况下读取它们。在寻求帮助时,他说一次读取输入的一个字符。
我尝试在 do-while 循环中使用 scanf 来读取输入的每个字符,但我的大多数尝试都以只读取第一个字符并放入记录字母数量的数组而告终。
printf("ENTER A LINE OF TEXT: \n");
do {
scanf("%c ", &userChar);
userChar = toupper(userChar);
userCharVal = userChar;
histo[userCharVal - 65] = histo[userCharVal - 65] + 1;
} while(userChar == '\n');
如果用户输入“apple”,相应的数组 histo[] 将根据输入的字母进行更新。一世。 e.如果用户输入的是apple,程序会先将histo[0]加1(对应'a'),然后读取该单词的下一个字符。它应该在换行符处结束读取用户输入。实际上,程序只是记录第一个字符,然后结束。
【问题讨论】:
-
使用
fgetc而不是fscanf -
您可能想要
while(userChar != '\n')而不是==。
标签: c