gpt4 book ai didi

c - 带冒号分隔符的 sscanf

转载 作者:太空宇宙 更新时间:2023-11-04 03:15:30 33 4
gpt4 key购买 nike

我是 C 编程的新手。我想从输入缓冲区字符串中提取值。我看到了几个 sscanf 的示例,它适用于空格分隔符,但不适用于冒号或逗号。

我尝试在 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 但它返回为 NULL。有人可以指出我做错了什么。谢谢!

最佳答案

我发现您的格式存在一些问题:

  • "%[^:]%d" - 第一部分将一直读取到遇到冒号为止,但不会读取冒号本身,这意味着后面的整数不会被正确读取并且字符串的其余部分将被错误地解析(如果有的话)。您需要 "%[^:]:%d"

  • "%s.%s" 用于字符串 "test.txt"%s 格式读取一个空格分隔 字符串,这意味着那里的第一个 "%s" 将读取整个 "测试。 txt"fileName。如果要拆分为名称和后缀,则需要使用 %[ 格式作为 int "%[^.].%s"

    <

并且如评论中所述,您需要将指针传递给 cmdChar

关于c - 带冒号分隔符的 sscanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52384941/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com