我正在尝试制作三个简单的c程序,但我将其限制为只有其中一个,因为第一个问题仅针对一个。 (是的,如果你很好奇,这就是hw。)
对于这个程序,目标是创建一个可以接受字符串的程序:
"BCC 6 T LL 8 9 *** & EXTRA@@@@@"
和输出/打印
"689"
我将在下面粘贴的代码是我对此的悲惨尝试,实际上我没有得到任何结果。任何帮助表示赞赏。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
printf("BCC 6 T LL 8 9 *** & EXTRA@@@@@\n");
char ch=getchar();
while(ch!='\n')
{
if(isdigit(ch)|| ch!='*' || ch!='@')
printf("%c", ch);
}
return 0;
}
答案 0 :(得分:0)
试试这个:
while ((ch = getchar()) != '\n') {
if (isdigit(ch) {
printf("%c", ch);
}
}
您的代码有一个严重的问题:您没有在getchar()
循环内调用while
。所以它只会读取一个字符并重复处理相同的字符。另一个问题是你的if
条件 - 对于所有字母和空格字符,ch != '*' || ch != '@'
的测试都是正确的。如果您只想打印数字,则无需进行这些测试。
正如我在评论中提到的,这将处理用户输入的内容,而不是您使用printf()
打印的内容。
答案 1 :(得分:0)
简单地做
while(ch!='\n')
if(ch >= '0' && ch <= '9')
printf("%c",ch);
简洁明了的代码。
当您使用isdigit()
时,无需调用单独的函数ch >= '0'
,它会比较字符的 ASCII 值和'0'
一旦条件成立,您的数字将被打印。还有no need to check for '*' and '@'
,新字符串中可以有更多这样的特殊字符。你可以把支票放多久?