1

我对 C 很陌生,我发现的任何关于我的问题的例子似乎都不起作用,或者我完全误解了那个解决方案是什么。我有一个大文件,其中包含如下数据:

赖氨酸 24L HB2 45.212 39.585 124.457 SC0 0.145 -0.795 0.585 0.157

在每一行。我已经使用 strtok 对数据进行了标记。我需要的是第二个字段,我希望将 24 存储为整数以进行比较,并将 L 存储为 char 以进行比较。

我尝试使用

sscanf(token[1], "%d%s", number, letter);

但我不断收到分段错误错误。同样在进一步尝试使用 sscanf 时,我尝试简单地打印出“LYS”(试图进一步理解我的问题),但是我的程序只会使用以下命令打印 L:

sscanf(token[0], "%c", &stemp);
letter = stemp;
printf("%c \n", letter);

但是,如果更改 %c ---> %s (希望获得整个字符串),那么我会再次获得 Segmentation fault 错误......我对 sscanf 命令有什么不明白的地方吗?为什么我不能读完整的字符串??提前感谢您的时间和帮助!

保罗

4

1 回答 1

4

我怀疑问题实际上是number并且分别是和letter类型。需要存储值的内存位置的地址,而不是变量本身;IE,intcharscanf()

int number;
char letter[2];

sscanf(token[1], "%d%s", &number, letter);

我已经制作letter了一个由两个字符组成的数组,并且正在传递数组的地址;%s与您使用的扫描转换相匹配。

于 2012-07-09T19:24:53.290 回答