Как не вводить строку два раза? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

нужна помощь с этой программой:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
// фильтр цифры, английские буквы
char *alf1 = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
// фильтр шестнадцетиричных чисел
char *alf2 = "0123456789abcdefABCDEF";
 
// в функции проверяем, если ли в строке buf символы, которых нет в alf
// 1 - все символы строки входят в фильтр
// 0 - есть символ, который не входит в фильтр
int checkword(char *buf,int len,char *alf,int len2)
{
   for (int i=0;i<len;i++)
   {
        int flag = 0;
        for (int j=0;j<len2;j++)
        {
           if (buf[i]==alf[j])
           {
              flag = 1;
              break;
           }
        }
        if (flag==0) return 0;
   }
   return 1;
}
 
int main ()
{
  char str[500];
  printf("Input string: ");
  gets(str); // получаем слова и подаем их в функцию checkword для проверки, фильтр - alf1
  char *pch = strtok (str," ");
  while (pch != NULL)
  { // выводим на экран слово, если функция вернула 1
    if (checkword(pch,strlen(pch),alf1,strlen(alf1))) printf ("%s ",pch);
    pch = strtok (NULL, " ");
  }
    printf("\nInput string: ");
    gets(str); // получаем слова и подаем их в функцию checkword для проверки, фильтр - alf2
    pch = strtok (str," ");
    while (pch != NULL)
    {
 if (strlen(pch)<=8) // длина не более 8 символов
 if (checkword(pch,strlen(pch),alf2,strlen(alf2)))
 {
     unsigned long n;
     sscanf(pch,"%lx",&n); // преобразуем шестнадцетиричное число в строке в unsigned long
     printf("\n Number = %s, res = %lu\n",pch,n); // выводим
 }
 pch = strtok (NULL, " ");
}
getch();
return 0;
}
во-первых как исправить функцию checkword, чтобы проверка шла через strchr или strpbrk. и еще как сделать так, чтобы не вводить строку два раза и при этом всё корректно работало и считало?

Решение задачи: «Как не вводить строку два раза?»

textual
Листинг программы
int checkword(char *buf,int len,char *alf,int len2)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы