Обработка строки: выписать в новую строку целые десятичные константы - 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);//Переписываем текущее слово в результирующую строку.
Объяснение кода листинга программы
- В условии проверяется, является ли последний символ строки пробелом и не является ли он нулем.
- Если условие выполняется, то с помощью функции strcat к результирующей строке добавляется текущее слово.