Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fscanf每隔一行返回一次_C_Eof_Scanf_Skip - Fatal编程技术网

fscanf每隔一行返回一次

fscanf每隔一行返回一次,c,eof,scanf,skip,C,Eof,Scanf,Skip,我试图从名为part_1.txt的文件中读取数字,该文件包含以下数据: 101 102 103 104 105 106 107 108 109 这是我正在使用的代码: #include <stdio.h> int main() { FILE *handle_in1 = fopen("part_1.txt", "r"); FILE *handle_in2 = fopen("part_2.txt", "r"); FILE *handle_out = fopen("parts.txt

我试图从名为
part_1.txt
的文件中读取数字,该文件包含以下数据:

101
102
103
104
105
106
107
108
109
这是我正在使用的代码:

#include <stdio.h>

int main()
{

FILE *handle_in1 = fopen("part_1.txt", "r");
FILE *handle_in2 = fopen("part_2.txt", "r");
FILE *handle_out = fopen("parts.txt", "w");

int scan;

if(handle_in1 == NULL || handle_in2 == NULL)
{
printf("File(s) could not be handled.");
}

else
{
while(fscanf(handle_in1, "%d", &scan) != EOF)
{
    fscanf(handle_in1, "%d", &scan);
    printf("Number is %d\n", scan);
}
}
return 0;

}
这个代码有什么问题

我编辑了这个问题,因为我要到8小时才能发布答案。以下版本为新版本:

#include <stdio.h>

int main()
{

FILE *handle_in1 = fopen("part_1.txt", "r");
FILE *handle_in2 = fopen("part_2.txt", "r");
FILE *handle_out = fopen("parts.txt", "w");

int scan;

if(handle_in1 == NULL || handle_in2 == NULL)
{
printf("File(s) could not be handled.");
}

else
{
fscanf(handle_in1, "%d", &scan);
    while(fscanf(handle_in1, "%d", &scan) != EOF)
    {
    printf("Number is %d\n", scan);
    }
}
return 0;
#包括
int main()
{
文件*handle_in1=fopen(“part_1.txt”,“r”);
文件*handle_in2=fopen(“part_2.txt”,“r”);
文件*handle_out=fopen(“parts.txt”、“w”);
int扫描;
if(handle_in1==NULL | | handle_in2==NULL)
{
printf(“无法处理文件”);
}
其他的
{
fscanf(句柄在1、%d、&scan中);
while(fscanf(handle_in1、%d、&scan)!=EOF)
{
printf(“编号为%d\n”,扫描);
}
}
返回0;
}


这个编辑版本的程序给我的值是:102、103、104、105、106、107、108和109。如果我编辑txt文件并在txt文件的顶部加上一个101,那么它会给出从101到109的所有值,因此它必须跳过第一个数字。为什么我不知道…

你在这里做错了什么:

while(fscanf(handle_in1, "%d", &scan) != EOF)
{
    fscanf(handle_in1, "%d", &scan);
    printf("Number is %d\n", scan);
}
解决办法是:

在循环的迭代中仅使用一个
scanf

因此,它将成为(这是一个解决方案):


你在这里做错了什么:

while(fscanf(handle_in1, "%d", &scan) != EOF)
{
    fscanf(handle_in1, "%d", &scan);
    printf("Number is %d\n", scan);
}
解决办法是:

在循环的迭代中仅使用一个
scanf

因此,它将成为(这是一个解决方案):


第二个问题的解决方案是,您必须在
else
之后和
while
之前删除第一个fscanf行

    FILE *handle_in1 = fopen("part_1.txt", "r");
    int scan;

    if(handle_in1 == NULL ){
            printf("File(s) could not be handled.");
    } else  {
    /*      fscanf(handle_in1, "%d", &scan);*/ // this line is unnecessary
            while(fscanf(handle_in1, "%d", &scan) != EOF) {
                printf("Number is %d\n", scan);
            }
    }
    return 0;

fscanf正在删除文件的第一行。

第二个问题的解决方案是,您必须在
else
之后和
之前删除第一行fscanf,而
与此类似

    FILE *handle_in1 = fopen("part_1.txt", "r");
    int scan;

    if(handle_in1 == NULL ){
            printf("File(s) could not be handled.");
    } else  {
    /*      fscanf(handle_in1, "%d", &scan);*/ // this line is unnecessary
            while(fscanf(handle_in1, "%d", &scan) != EOF) {
                printf("Number is %d\n", scan);
            }
    }
    return 0;

fscanf正在删除文件的第一行。

此解决方案有一点帮助,但它仍然会跳过txt文件中的第一个数字……这不应该跳过。从前面的结果可以看出,这跳过了第一个数字,因为在打印之前有两个
scanf
语句。现在只有一个,逻辑上应该可以正常工作。我正在使用代码块,我已经检查了多次。我将我第一篇文章中的代码的编辑版本复制粘贴到IDE中,它仍然跳过第一个数字:101。这个解决方案有一点帮助,但它仍然跳过txt文件中的第一个数字…这不应该跳过。从前面的结果可以看出,这跳过了第一个数字,因为在打印之前有两个
scanf
语句。现在只有一个,逻辑上应该可以正常工作。我正在使用代码块,我已经检查了多次。我将我第一篇文章中的代码的编辑版本复制粘贴到我的IDE中,但它仍然跳过了第一个数字:101。你可能应该把它交给tod,因为他确实回答了你的问题。我刚刚在你的实现中发现了一个问题。你应该把它交给托德,因为他确实回答了你的问题。我刚刚发现您的实现中存在一个问题。