Я пытаюсь прочитать целочисленные значения из стандартного ввода. У меня есть внутреннее время l oop, которое обнаруживает целочисленные ряды, чтобы я мог проанализировать целые числа с несколькими символами. Я strtok буфера с разделителями новой строки, потому что ввод может иметь целые числа в нескольких строках.
Мой код для обработки это:
while (fgets(buf, BUF_SIZE, stdin)) {
strtok(buf, "\n");
for(int i = 0; buf[i] != '\0'; i++) {
size_t j = 0;
if(isdigit(buf[i])) {
while(isdigit(buf[i+(int)j])) {
j++;
}
char *new_str = malloc(j*sizeof(char));
size_t k =0;
while(k < j) {
new_str[k] = buf[i+(int)k];
k++;
}
printf("%s\n", new_str);
free(new_str);
}
}
}
Ввод может быть: 1 9 10 10 11
Вывод должен быть:
1
9
10
10
11
Вывод, который я получаю:
1
9
10
0
10
0
11
1
Таким образом, каждый последний символ ввода с n> 1 дважды читается буфером способ.
Я не уверен, как это возможно, но не могу понять это.