Обработка строки: выписать в новую строку целые десятичные константы - C (СИ)

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

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

Здравствуйте,имеется задание: Переписать слова, которые представляют собой правильную целую десятичную константу. Есть даже наработка,даже наверное больше скажу,программа в какой-то степени работает,но вот в чем проблема,мне необходимо,чтобы она не выписывала в новую строку числа,которые начинаются с 0(по факту это же не десятичная константа),вот мой код,спасибо за раннее
#include "stdio.h"
#include "math.h"
#include "conio.h"
#include "windows.h"
#include<string.h>
 
int main ()
{   int i,i1,i2,n,Kol_Digit;
    char s1[80], s2[80]="",slovo[30];
    SetConsoleOutputCP (1251);
    SetConsoleCP (1251);
    printf("\aВведите строку\n");
    gets(s1);
    printf("Исходная строка\n");
    puts(s1);
    i=0;
    while(i<strlen(s1))
    {   //Определяем позицию начала слова
        while(i<strlen(s1) && s1[i]==' ')i++;
        if(i<strlen(s1))//
        {
            i1=i;                                           //начало текущего слова
            while(i<strlen(s1) && s1[i]!=' ')i++; //конец текущего слова
            n=i-i1;                                     //длина текущего слова
            strncpy(slovo,&s1[i1],n);   //копируем текущее слово в
            slovo[n]=' ';                           //поле slovo, добавляем пробел
            slovo[n+1]='\0';                    //и символ '\0'
            Kol_Digit=0;        //Количество символов, являющихся цифрой
            for(i2=0;i2<strlen(slovo)-1;i2++)
            {   //проверка, является-ли текущий символ строки цифрой
                if(isdigit((unsigned char)slovo[i2] ))   
                    Kol_Digit++;
                else
                    break;//Найден символ "не цифра". Цикл можно прервать
            }
            if(Kol_Digit==strlen(slovo)-1 && slovo[1]!='0') //Последний символ - пробел
                strcat(s2,slovo);//Переписываем текущее слово в результирующую строку.
        }
    }
    s2[strlen(s2)-1]='\0';//В конце результирующей строки удаляем лишний пробел.
    printf("Результирующая строка длиной %d\n",strlen(s2));
    puts(s2);
    getch ();
    return 0;
}

Решение задачи: «Обработка строки: выписать в новую строку целые десятичные константы»

textual
Листинг программы
if(Kol_Digit==strlen(slovo)-1 && slovo[1]!='0') //Последний символ - пробел
                strcat(s2,slovo);//Переписываем текущее слово в результирующую строку.

Объяснение кода листинга программы

  1. В условии проверяется, является ли последний символ строки пробелом и не является ли он нулем.
  2. Если условие выполняется, то с помощью функции strcat к результирующей строке добавляется текущее слово.

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


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

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

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