![](/img/trans.png)
[英]In C, how do I check if a String contains 2 digits, 1 letter and 4 digits?
[英]How do I extract digits from a C string?
我正在尝试制作三个简单的c程序,但是我将其限制为仅其中一个,因为第一个问题仅特定于一个。 (是的,这是为了防止您好奇。)
对于此程序,目标是创建一个可以接收字符串的程序:
"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;
}
尝试这个:
while ((ch = getchar()) != '\n') {
if (isdigit(ch) {
printf("%c", ch);
}
}
您的代码有一个严重的问题:您没有在while
循环内调用getchar()
。 因此,它将只读取一个字符并重复处理该字符。 另一个问题是您的if
条件ch != '*' || ch != '@'
ch != '*' || ch != '@'
对于所有字母和空格字符均适用。 如果您只想打印数字,则无需进行这些测试。
正如我在评论中提到的那样,这将处理用户键入的内容,而不是您使用printf()
打印的内容。
简单地做
while(ch!='\n')
if(ch >= '0' && ch <= '9')
printf("%c",ch);
简洁明了的代码。 无需调用单独的函数isdigit()
,当您使用ch >= '0'
它将比较字符的ASCII值和'0' 。条件成立时,将打印您的数字。 同样no need to check for '*' and '@'
,在新字符串中可以有更多这样的特殊字符。 您可以支票多久?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.