gpt4 book ai didi

c - 使用 fscanf 读取字符串,然后读取可变数量的整数到 EOF

转载 作者:行者123 更新时间:2023-11-30 15:15:36 25 4
gpt4 key购买 nike

我在启动分配给我的项目时遇到了一些问题。我无法使用字符串运算符、fgets 等。我需要将文件扫描到 EOF。

以下是该文件的示例:

AND 3 2 1
OR 4 5 6
SPECIAL 4 5 6 7

我试图做的是设置一个 while 循环:

while (fscanf(circuit, "%s", cur_gate) != EOF){

然后尝试检查 cur_gate 字符串是什么:

if (cur_gate[0] == 'A'){

问题是,我不知道如何在读取字符串后扫描 3 个整数。最终,一旦它读取 SPECIAL,我就需要扫描 4 个整数。

我想将第一个整数存储在名为 Output 的数组中,其余整数存储在名为 INPUT 的数组中。

总而言之,我如何 fscanf 一个字符串,然后根据我读取的字符串 fscanf 可变数量的整数?

最佳答案

根据我对您问题的理解,下面的代码会对您有所帮助。

我假设,您只想将所有输出存储在一个数组中,同样将所有输入存储在一个数组中。因此,根据您的示例,您希望将 3,4,4 (单词后面的第一个整数)存储在输出数组中。其余整数需要转到另一个输入数组。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define MAX_CHAR 256
#define MAX_IN 100
#define MAX_OUT 100

enum
{
FALSE = 0,
TRUE
};

int main()
{
char word[MAX_CHAR];
FILE *fp;

int i = 0, in[MAX_IN];
int o = 0, out[MAX_OUT];

int flag = FALSE;

fp = fopen("dict.txt","r");
if(NULL != fp)
{
while(fscanf(fp, "%s", word) != EOF)
{
printf("%s\n",word);
if(0 != isalpha(word[0]))
{
flag = TRUE;
}
else
{
if(TRUE == flag)
{
out[o] = atoi(word);
o++;
flag = FALSE;
}
else
{
in[i] = atoi(word);
i++;
}
}
}
fclose(fp);
}
int j;
printf("INPUT: ");
for(j=0; j<i; j++)
{
printf("%d\t",in[j]);
}
printf("\n");
printf("OUTPUT: ");
for(j=0; j<o; j++)
{
printf("%d\t",out[j]);
}
printf("\n");
return(0);
}

您给出的文件示例的输出

INPUT: 2        1       5       6       5       6       7
OUTPUT: 3 4 4

免责声明:代码已在我的环境中编译和测试。我鼓励您自己处理错误处理场景。

关于c - 使用 fscanf 读取字符串,然后读取可变数量的整数到 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33510393/

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