带冒号分隔符的 sscanf
sscanf with colon delimeter
我是 C 编程的新手。我想从输入缓冲区字符串中提取值。我看到了几个 sscanf
的示例,它适用于 space 定界符,但不适用于冒号或逗号。
我尝试在 sscanf 中使用一些正则表达式,但似乎仍然不起作用。
#include <stdio.h>
int main() {
char buffer[] = "T:192.164.7.1:22:user:pass:empty:test.txt";
char cmdChar;
char ipAddress[100];
int port;
char username[100];
char password[100];
char folder[100];
char fileName[100];
char fileExtension[100];
sscanf(buffer, "%1c:%[^:]%d:%s:%s:%s:%s.%s", cmdChar, ipAddress, &port, username, password, folder, fileName, fileExtension);
printf("%c \n\n", cmdChar);
}
尝试打印第一个字符 cmdChar
,但 returns 显示为 NULL
。有人可以指出我做错了什么。谢谢!
我发现您的格式存在一些问题:
"%[^:]%d"
- 第一部分会一直读到遇到冒号,但不会读冒号本身,这意味着后面的整数不会被正确读出,其余的该字符串将被错误地解析(如果有的话)。你需要 "%[^:]:%d"
.
"%s.%s"
表示字符串 "test.txt"
。 %s
格式读取 space 分隔的 字符串,这意味着第一个 "%s"
将整个 "test.txt"
读入 fileName
.如果要拆分为名称和后缀,则需要使用 %[
格式作为 int "%[^.].%s"
.
并且如评论中所述,您需要将指针传递给 cmdChar
。
我是 C 编程的新手。我想从输入缓冲区字符串中提取值。我看到了几个 sscanf
的示例,它适用于 space 定界符,但不适用于冒号或逗号。
我尝试在 sscanf 中使用一些正则表达式,但似乎仍然不起作用。
#include <stdio.h>
int main() {
char buffer[] = "T:192.164.7.1:22:user:pass:empty:test.txt";
char cmdChar;
char ipAddress[100];
int port;
char username[100];
char password[100];
char folder[100];
char fileName[100];
char fileExtension[100];
sscanf(buffer, "%1c:%[^:]%d:%s:%s:%s:%s.%s", cmdChar, ipAddress, &port, username, password, folder, fileName, fileExtension);
printf("%c \n\n", cmdChar);
}
尝试打印第一个字符 cmdChar
,但 returns 显示为 NULL
。有人可以指出我做错了什么。谢谢!
我发现您的格式存在一些问题:
"%[^:]%d"
- 第一部分会一直读到遇到冒号,但不会读冒号本身,这意味着后面的整数不会被正确读出,其余的该字符串将被错误地解析(如果有的话)。你需要"%[^:]:%d"
."%s.%s"
表示字符串"test.txt"
。%s
格式读取 space 分隔的 字符串,这意味着第一个"%s"
将整个"test.txt"
读入fileName
.如果要拆分为名称和后缀,则需要使用%[
格式作为 int"%[^.].%s"
.
并且如评论中所述,您需要将指针传递给 cmdChar
。