Я пытаюсь написать программу, которая читает файл и суммирует все числа, которые находятся в интервале от 0 до 9, чтобы он мог распознавать число 6 как 6 и число 12 как 1 и 2 или что-то в этом роде.Вот код, который обычно суммирует числа от 0 до 9, но обманчиво суммирует числа вроде 12. Например, я даю указатель функции atoi, который указывает на 1, и atoi возвращает число 12 вместо 1, а затем возвращает 2, так что сумма этих чисел будет14 вместо 3. Не знаю, почему это происходит! Спасибо всем за плодотворные решения.
void sumNumbers(FILE *INCOME_stream)
{
char defaultNumbers[]={'0','1','2','3','4','5','6','7','8','9'};
char* defNum_ptr=defaultNumbers;
char stream_string[maxLength];
char* stream_string_ptr=stream_string;
while(fgets(stream_string_ptr,maxLength,INCOME_stream)!=NULL)
{ int numb=0;
int stringLength=strlen(stream_string_ptr);
for(int z=0;z<stringLength;z++)
{
for(int h=0;h<sizeof(defaultNumbers);h++)
{
if(*(stream_string_ptr+z)==*(defNum_ptr+h))
{
numb+=atoi(stream_string_ptr+z);
}
}
}
printf("sum=%d ",numb);
}