问题陈述:
需要处理从 STDIN 接受的输入字符串。并仅查找字符串中存在的所有数字标记。
将标记视为由空格分隔的可打印字符序列。 (在数字标记中,所有字符都是数字)
您需要构建一个新字符串,其形式为 numeric_token1 numeric_token2 按升序打印此字符串。 (单个空格是分隔符)(如果没有找到数字标记,则需要打印 NONE FOUND)
输入:我们需要从 STDIN 读取一行以仅提取数字标记
输出: 由 number1 number2 按升序排列组成的字符串。或者没有找到
测试用例:
Input: hello hi 123 789 45 hi
Output: 45 123 789
Input: 20 abc beg 90 67
Output: 20 67 90
Input: hi hello foo bar foo
Output: NONE FOUND
我尝试了以下方法,使用静态方式,对它们进行标记并按升序重新排列,但不够幸运。我对这些代币很陌生,非常感谢任何帮助。
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
char* RemoveCharac(char* input)
{
char* dest = input;
char* src = input;
while(*src)
{
if (isalpha(*src))
{
src++;
continue;
}
*dest++ = *src++;
}
*dest = '\0';
return input;
}
int main(void)
{
char inText[] = "hello hi 123 789 45 hi";
char *pch;
char* strArray[1024];
char* ResText = RemoveCharac(inText);
int i = 0,j;
printf("The result is %s\n", ResText);
pch = strtok (ResText," ,.-");
while (pch != NULL)
{
strArray[i] = malloc(strlen(pch) + 1);
strcpy(strArray[i], pch);
printf ("%s ",pch);
pch = strtok (NULL, " ,.-");
i++;
}
printf ("\n");
for(j=0;j<i;j++)
{
printf("\t %s",strArray[i]);
}
return 0;
}