gpt4 book ai didi

c - fscanf 的哪个占位符?

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

我有一个打开的文件,其中有一堆包含如下数据的行:

 0x804ae1c: W 0x0000000c

我试图将 3 个不同的字符串提取到 3 个不同的变量中,但我在从第二个和第三个标记获取值时遇到问题。

下面是我尝试的方法:

 unsigned long address;
unsigned long address2;
char* readWrite;
fscanf(traceFile, "%lx %s %lx\n", &address, line, &address2)

我得到了第一行的指针。即:

 804ae1c

但在那之后,其他 2 个变量没有得到分配给它们的正确的东西。我尝试将 line 更改为 char 但无济于事。我应该如何着手解决这个问题?

谢谢!

最佳答案

首先,您需要分配存储空间,而不是仅仅声明一个char*。如果您只读取一个字符,一个简单的 char 就足够了。

正如 BLUEPIXY 的评论所提到的,您需要考虑字符串中额外的 : 字符。这是一个显示此内容的测试程序(从标准输入读取)。

#include <stdio.h>

int main(){
unsigned long address;
unsigned long address2;
char readWrite;
int retVal;

retVal = scanf("%lx: %c %lx", &address, &readWrite, &address2);
if (retVal == 3) {
printf("%lu: %lu %c\n", address, address2, readWrite);
} else {
fprintf(stderr, "Parsing error\n");
}
}

关于c - fscanf 的哪个占位符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38948502/

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