Я новичок и мой английский не очень извиняюсь в первую очередь. im пытается суммировать числа в строке (для a14fg5pk145 он возвращает 14 + 5 + 145), и он не работает: «Исключение брошено: нарушение прав на чтение. str было 0x61».Исключение брошено: нарушение прав на чтение
это я мой код:
void main()
{
int x, i;
char* pp;
char buffer[SIZE];
printf("Please enter numbers and letters:\n");
gets(buffer);
pp = buffer;
x = SumStr(*pp);
printf("%d", x);
}
int SumStr(char* str)
{
int sum=0, num=0, flag = 0;
while ((*str) != '\0')
{
while (((*str) > '1') && ((*str) < '9'))
{
if (flag == 0)
{
num += (*str);
flag = 1;
}
else if (flag == 1)
num = num * 10 + (*str);
str++;
}
if (flag == 0)
str++;
sum += num;
num = 0;
flag = 0;
}
return sum;
}
Еще советуют: '((* ул)> '1') && ((* ул) < '9') 'is' isdigit (* str) '. Не изобретайте велосипед, используйте стандартные библиотеки. – DyZ
Не нули в ваших номерах? На самом деле вы исключаете '0',' 1' и '9', что немного необычно. –
SO не является отладочной службой. Скомпилируйте с помощью символов, запустите код внутри отладчика, чтобы трассировать программы (программы) по очереди, проверяя значения соответствующих переменных, чтобы узнать, что действительно происходит. Если тогда возникает * конкретный * вопрос, не стесняйтесь возвращаться сюда. – alk