我有一个打开的文件,其中包含大量包含以下数据的行:
0x804ae1c: W 0x0000000c
我正在尝试将3个不同的字符串提取为3个不同的变量,但是我在从第2和第3个标记获取值时遇到问题。
以下是我尝试这样做的方法:
unsigned long address;
unsigned long address2;
char* readWrite;
fscanf(traceFile, "%lx %s %lx\n", &address, line, &address2)
我得到第一行的指针。即:
804ae1c
但之后其他2个变量没有分配给它们的正确的东西。我尝试将线路改为char但无济于事。我该如何处理这个问题?
谢谢!
答案 0 :(得分:2)
首先,您需要分配存储空间,而不仅仅是声明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");
}
}