Есть код, но не понимаю почему цикл while где обрабатывается istr2 выполняется только один раз? Как мне исправить данный код?
задача: например пользователь вводит buf ="1 2 3 4\n1 2 3 4\n1 2 3 4\n\n"
нужно найти строки, где находится самое минимальное число, то есть в данном случае, min_line должно быть = "1 2 3", так как самое минимальное число '1' находится в первой во второй и третьей троке
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#include <limits.h>
#include <string.h>
int min_num = INT_MAX;
char buf[10000];
char min_line[30] = "";
int num;
int sum_col[10] = {0};
int main()
{
int l = 0;
int count = 0;
char c;
while((c = getchar()) != EOF){
if(c == '\n')count++;
else count = 0;
if(count == 2)break;
buf[l] = c;
l++;
if (isdigit(c)) {
int digit = c - '0';
sum_col[digit]++;
}
}
int line_num = 1;
char sep2[] = "\n";
char sep3[] = " ";
char *istr2 = strtok(buf, sep2);
while (istr2 != NULL) {
char istr2_copy[1000];
strcpy(istr2_copy, istr2);
char *istr3 = strtok(istr2_copy, sep3);
while (istr3 != NULL) {
num = atoi(istr3);
if (num < min_num) {
min_num = num;
strcpy(min_line, "");
sprintf(min_line, "%d", line_num);
} else if (num == min_num) {
sprintf(min_line, "%s %d", min_line, line_num);
}
istr3 = strtok(NULL, sep3);
}
line_num++;
istr2 = strtok(NULL, sep2);
}
printf("%s\n", min_line);
for (int i = 0; i < 10; i++){
int temp = sum_col[i] / 3;
if(sum_col[i]% 3 == 2)temp++;
printf("%d ", i);
for(int p = 0; p < temp; p++){
printf("*");
}
printf(" %d\n", sum_col[i]);
}
return 0;
}