从单行

时间:2015-10-19 21:41:10

标签: c gcc scanf

我目前正在研究虚拟机,我正在尝试从多行文件中扫描指令到我的编译器。 每行的格式为:xx yyyy zzz - xx:是整数(代表内存位置) - yyyy:是字符还是字符串(代表指令) - zzz:也是整数(表示要存储的值)

这是我尝试过的:

while (fgets(buf, sizeof buf, fPtr) != NULL)
{
    scanf(buf,"%d %s %d",&address,&string,&value);
        if(string == "SET")
        {
            printf("SET found");
        }
}

我已经尝试过scanf,fscanf和其他一些我记不住的了。 非常感谢我能得到的任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

您无法使用scanf来获取字符串的输入。您必须使用sscanf函数从字符串中获取输入。

然后你在scanf中传递%s的字符数组。那是不对的。因为,"字符串"是字符数组字符串[0]的地址而不是"& string"。

因此,您将尝试以下代码。

while (fgets(buf, sizeof(buf), fPtr) != NULL)
{
    sscanf(buf,"%d%s%d",&address,string,&value);
        if(string == "SET")
        {
            printf("SET found");
        }
}