您好sscanf
我遇到了问题。我只是想写一个简单的测试程序来帮助我理解它是如何工作的。使用sscanf
写入不同变量时会出现问题。以下是他们的价值观:
IP = 175.85.10.147
数= 2589
email = 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
变量只包含奇怪的字符。
答案 0 :(得分:3)
您需要一些内存来存储号码
即。变化
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;
}