gpt4 book ai didi

c - C 的 Sscanf 问题

转载 作者:行者123 更新时间:2023-12-04 02:07:54 25 4
gpt4 key购买 nike

您好,我在使用 sscanf 时遇到问题。我只是想写一个简单的测试程序来帮助我理解它是如何工作的。使用 sscanf 写入不同变量时会出现问题。它们的值应该是这样的:

IP=175.85.10.147

数量=2589

电子邮件 = edward@gmail.com

 #include <stdio.h>
#include <stdlib.h>

int main() {
char *toSend = "175.85.10.147:2589:edward@gmail.com";
int *number;
char IP[200];
char email[300];
sscanf(toSend, "%[^:]: %i%[^:]: ", IP, number, email);
printf("%s", IP);
printf("%i", number);
printf("%s", email);
return 0;
}

它打印的 IP 是正确的。

数字打印不正确,这可能与我在编译时收到的警告有关:format '%i' expects argument of type 'int' but argument 2 has type 'int *'

email 变量出于某种原因只包含奇怪的字符。

最佳答案

你需要一些内存来存储数字

即改变

int *number;

int number;

然后使用

 sscanf(toSend,"%[^:]:%i:%[^:]",IP, &number, email);

我也更正了拼写错误 - 这是代码 http://ideone.com/hpqGDZ

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main(){
char *toSend = "175.85.10.147:2589:edward@gmail.com";
int number;
char IP[200];
char email[300];
if (sscanf(toSend, "%199[^:]:%i:%299[^:]", IP, &number, email) != 3) {
return 1;
}
printf("%s\n", IP);
printf("%i\n", number);
printf("%s\n", email);
return 0;
}

关于c - C 的 Sscanf 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41731170/

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