使用 scanf 分隔冒号时遇到问题
Trouble with delimiting colon with scanf
我在使用 scanf
时遇到了一些问题。我要读取的输入将是这种格式:
string:integer:
例如,ptest/src/test.c:19:blahblahblah
将是一个有效的字符串。我想存储 p2test/src/test.c
和 19
。但是,我 运行 遇到了一些问题,即 19
没有读入。
这是我正在尝试的:
#include <stdio.h>
int main() {
char *str;
char *i;
int n = 0;
scanf("%m[^':'], %m[^':']", &str, &i);
printf("# inputs read: %d\n", n);
printf("%s\n", str);
printf("%s\n", i);
return 0;
}
最后,我读取了 1 个输入,但只打印了 ptest/src/test.c
。另一个问题是我使用的 m
标志从 gcc 得到警告。我正在使用 C89,并且在使用 a
时也收到了相同的警告。
好像格式不对,要读冒号,没有逗号。试试这个:
scanf("%m[^':']:%m[^':']", &str, &i);
希望对您有所帮助。
我在使用 scanf
时遇到了一些问题。我要读取的输入将是这种格式:
string:integer:
例如,ptest/src/test.c:19:blahblahblah
将是一个有效的字符串。我想存储 p2test/src/test.c
和 19
。但是,我 运行 遇到了一些问题,即 19
没有读入。
这是我正在尝试的:
#include <stdio.h>
int main() {
char *str;
char *i;
int n = 0;
scanf("%m[^':'], %m[^':']", &str, &i);
printf("# inputs read: %d\n", n);
printf("%s\n", str);
printf("%s\n", i);
return 0;
}
最后,我读取了 1 个输入,但只打印了 ptest/src/test.c
。另一个问题是我使用的 m
标志从 gcc 得到警告。我正在使用 C89,并且在使用 a
时也收到了相同的警告。
好像格式不对,要读冒号,没有逗号。试试这个:
scanf("%m[^':']:%m[^':']", &str, &i);
希望对您有所帮助。