someuser:~/repo/a1/part1> /bin/ls -l
total 12
-rw------- 1 someuser student 489 Jan 28 07:30 file.c
-rw------- 1 someuser student 462 Jan 16 12:44 Make
drwx------ 2 someuser student 4096 Jan 28 03:59 test_inputs
以结果中的第二行为例。
-rw------- 1 someuser student 489 Jan 28 07:30 file.c
我想通过-rw-------
函数将权限489
和文件大小scanf
解析为另一个函数中的参数。我该如何实施?
答案 0 :(得分:0)
使用fgets()
读取行,然后进行解析。 @Some programmer dude
“ scanf ....是必需的”是一个不好的要求。但是有时候,出来的顾客有些愚蠢。
使用scanf函数
关键是需要对整行进行解析以使输入对齐以进行下一次解析。
一种相当简单的方法是使用:
"*"
按说明符进行扫描,但不保存。 '\n'
或文件末尾。 // -rw------- 1 someuser student 489 Jan 28 07:30 file.c
char rights[10+1];
unsigned long long size;
int count;
for (;;) {
char eol = '\n';
count = scanf("%10s %*d %*s %*s %llu %*s %*d %*d:%*d %*s%c", rights, &size, &eol);
if (count == EOF) break;
if (count >= 2 && eol == '\n') {
printf("Rights:<%s> size:%llu\n", rights, size);
} else {
// input ill formed, handle error
// Perhaps report error, then read and toss, up to the end-of-line
TBD();
}
}