У меня есть простая программа, использующая sscanf
.Проблема, с которой я сталкиваюсь, заключается в том, что после сопоставления %[^-]s
, sscanf
кажется просто прекращает сопоставление.
Вот простой код, чтобы понять, что я имею в виду.Совпадение %s
после %[^-]s %s
полностью игнорируется.
ПРИМЕЧАНИЕ. Мне нужно %[^-]s
, так как мне нужно, чтобы моя программа соответствовала обеим возможным строкам.
ПРИМЕЧАНИЕ 2: Iзнать, что код абсолютно небезопасен и т. д. Это всего лишь пример!
#include <stdio.h>
int main(void) {
int matches;
int num1, num2, num3, num4;
char *s1[10];
char *s2[10];
char *s3[40];
char *s4[50];
char *s5[50];
char *s6[50];
char *s7[50];
char fileTest[] = "29 0 8:4 / / rw,relatime shared:1 - ext4 /dev/sda4 rw,errors=remount-ro";
// char fileTest[] = "160 48 179:56 /inte /var/oil/gaol/org.something.org/media/internal ro,nosuid,relatime - ext4 /dev/mmccc rw,data=ordered";
matches = sscanf(fileTest, "%d %d %d:%d %s %s %[^-]s %s",
&num1, &num2, &num3, &num4, s1, s2, s3, s4);
printf("matches: %d\n", matches);
printf("num1: %d\n", num1);
printf("num2: %d\n", num2);
printf("num3: %d\n", num3);
printf("num4: %d\n", num4);
printf("s1: %s\n", s1);
printf("s2: %s\n", s2);
printf("s3: %s\n", s3);
printf("s4: %s\n", s4);
return 0;
}