C/C++

Помогите доработать код на СИ по теме строки

Задание:
Дан текст. Определить, является ли он правильной десятичной записью целого числа.


Доработать:

Отрицательные числа сделать правильной записью целого числа. Научится определять числа по типу "001" - как правильные, т.к число не может начинаться с 0.


Код:

https://pastebin.com/9ThwHBv7
Твое задание давно видел, что там сложного не могу понять.
Я могу такой вариант «правильной десятичной записью целого числа»
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <locale.h>

int main()
{
setlocale(LC_ALL, "Russian");
printf("Введите число:");
char str[100] = "";
scanf("%s", str);

bool t = true;
for( int i = 0; i < strlen(str); i++ )
{
if(i==0 && (str[i]=='-' || str[i]=='+')) continue;
if( str[i] < '0' || str[i] > '9' )
{
t = false;
break;
}
}
if( t )
printf("Правильное число");
else
printf("Неправильное число");

getchar();
getchar();
}
Мелис Нурланбеков
Мелис Нурланбеков
67 518
Лучший ответ
Резка Плитки Резка Под 45 Забавно, автор требовал усовершенствовать чтобы 001 считалось правильным числом, потому что целое число НЕ может начинаться на 0, вы так и сделали)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char s[20],*p; scanf("%s",s); strtol (s,&p,10);
printf("%s\n",(strlen(s)==p-s?"Yes":"No")); return 0;}
William Devarge Umer
William Devarge Umer
77 438
Резка Плитки Резка Под 45 ДЗ: написать свой класс вектор который умеет тота и тота.
Краб: Не вопрос. typedef ::vector<int> myvector;
bool isint(const char* str)
{
const char* numeric = "-0123456789";
bool minus = false;
if (str[0] == '-' && count(str,str+strlen(str), '-') == 1) minus = true; //если во всей строке 1 минус и он вначале - устанавливаем флаг минус
if (minus && str[1] == '0' || !minus && str[0] == '0') return false; //если перый нуль или -0 вернуть false
if (strspn(str, numeric + !minus) != strlen(str)) return false; //если вся строка состоит только из нумерик (с поправкой на -) ок, иначе false
return true;
}
3 А Класс 3 А
3 А Класс 3 А
51 416
За C ничего сказать не могу только C++
Да и до конца что от меня требуется я не понимаю
Юрий Хороший Если в программу ввести -1 - то он скажет, что число не правильное, хотя это не так или 001 - тоже самое. Нужно это исправить