#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main()
{
int upper=0;
int digit=0;
int i=0;
char s[30];
char c;
printf("Enter sentence: ");
fgets(s, 30, stdin);
//s[strlen(s) - 1] = '\0';
while(c=getchar() && c!='\n')
{
c = s[i];
if(isupper(c))
{
upper++;
}
if(isdigit(c))
{
digit++;
}
i++;
}
printf("Number of upper case letters............... %d", upper);
printf("\n");
printf("Number of digits........................... %d", digit);
printf("\n");
printf("Program done. ");
return 0;
system("PAUSE");
}
我如何删除与fgets后多个换行符()?我试过在fgets()之后执行下面一行:如何在fgets()后删除多个尾随换行符?
s [strlen(s) - 1] ='\ 0';
但是,这并不工作,我的程序不会通过所有的代码运行。
没有代码-----> S [strlen的(S) - 1] = '\ 0';
这里是输出:
Enter sentence: Whats UP 1234
Number of upper case letters............... 3
Number of digits........................... 4
Program done.
Process returned 0 (0x0) execution time : 9.340 s
Press any key to continue.
正如你可以看到我的程序能够运行,但是我必须按多次输入,有很多新行 的然后程序运行最后一段代码。
程序是假设计算输入的字符串 中的大写字母和数字编号。有人可以解释为什么会发生这种情况吗?
删除'getchar'东西。基本上这意味着你必须按**输入多次**才能看到你的输出。我不知道你认为它会增加你的程序。 – usr2564301
谢谢!解决了这个问题。 – JonSnow
@JonSnow如果您解决了这个问题,请回答或删除您的问题,以帮助未来的帖子读者解决同样的问题。 – moffeltje