我想以C语言逐行传入一个文件,并使用scanf读取,但跳过第一行 #包括 #包括 int 主(空){ //声明变量 //想读第一行,然后忽略它。从第二行开始 //我扫描输入值,然后将它们存储在各自的数组中。 国际年、月、日、loc; 双mx,mm; /*读取并放弃文件的第一行*/ scanf(“%*[^\n]”); /*从第二行开始读*/ 而(扫描(“%d,%d,%d,%d,%lf,%lf\n”, &loc、yy、mm、dd、mx和mn)==6){ //将每个输入存储在自己的数组中。 } }

我想以C语言逐行传入一个文件,并使用scanf读取,但跳过第一行 #包括 #包括 int 主(空){ //声明变量 //想读第一行,然后忽略它。从第二行开始 //我扫描输入值,然后将它们存储在各自的数组中。 国际年、月、日、loc; 双mx,mm; /*读取并放弃文件的第一行*/ scanf(“%*[^\n]”); /*从第二行开始读*/ 而(扫描(“%d,%d,%d,%d,%lf,%lf\n”, &loc、yy、mm、dd、mx和mn)==6){ //将每个输入存储在自己的数组中。 } },c,C,scanf(“%*[^\n]”)确实会读取并丢弃第一个换行符,但不会丢弃换行符本身。我建议将其与getchar()配对 \n格式字符串中的内容与您认为的不同;由于scanf不是面向行的(而是面向字段的),您可能会发现它将丢弃所有空白字符,而不仅仅是换行符。我不认为这是个问题。如果您想逐字丢弃该行的其余部分,可以使用建议丢弃第一行的相同代码: #include <stdio.h> #include <stdlib.h> int main(void){ //Decla

scanf(“%*[^\n]”)
确实会读取并丢弃第一个换行符,但不会丢弃换行符本身。我建议将其与
getchar()配对

\n
格式字符串中的内容与您认为的不同;由于
scanf
不是面向行的(而是面向字段的),您可能会发现它将丢弃所有空白字符,而不仅仅是换行符。我不认为这是个问题。如果您想逐字丢弃该行的其余部分,可以使用建议丢弃第一行的相同代码:

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

int 
main(void){

 //Declare variables
  //Want to read the first line and then ignore it.  From the second line
  //I scan in the input values and then store them in their individual arrays.

     int yy, mm, dd, loc;
     double mx, mm;
         /*Read and discard the first line of the file*/
          scanf("%*[^\n]");

         /*Read from the second line*/
         while(scanf("%d,%d,%d,%d,%lf,%lf\n",
                    &loc, &yy, &mm, &dd, &mx, &mn) == 6){

            //Storing each input in its own array.
  }

}

在您的代码中有两个
mm
声明,尽管您没有提到错误消息,所以我猜您的测试用例不准确,您希望其中一个(双
double
)是
mn

在讨论了这些问题之后,正如(包括在下面)演示的那样,我希望您的程序能够读取并丢弃第一行,然后读取四个
int
s字段作为十进制数字,然后读取两个
double
s字段作为十进制数字,用逗号分隔

scanf("%*[^\n]");
getchar();
#包括
#包括
内部主(空){
国际年、月、日、loc;
双mx,mn;
scanf(“%*[^\n]”);
getchar();
而(扫描频率(“%d,%d,%d,%d,%lf,%lf\n“,&loc,&yy,&mm,&dd,&mx,&mn)==6){
printf(“\n”,loc,yy,mm,dd,mx,mn);
}
}

更新:从您的一条评论来看,这实际上不符合您的作业要求。“您应该使用单独的while(getchar())循环来使用第一行”,因此
scanf(“%*[^\n]”;getchar()应替换为循环


如果您最终在问题中添加了该循环的尝试,请随时ping我,以便我提供反馈。

您有什么问题?显示的代码没有打开任何文件。此外,
scanf
只读取表单
stdin
…,请!“您的程序应该将整个输入数据集读取到一组并行数组中。”这是我们给出的方向,同时还有一个提示:“您应该使用一个单独的while(getchar())循环来使用第一行”我对这个抱歉的家伙不是很好,所以我非常感谢您的帮助。叹气。。。所以你给了我们一些错误的代码和一个模糊的、不相关的问题,并且遗漏了问题的关键部分(你的整个作业规范)。为什么不把作业规格表和代码一起给我们,然后问我们有什么问题?
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int yy, mm, dd, loc;
    double mx, mn;

    scanf("%*[^\n]");
    getchar();

    while (scanf("%d,%d,%d,%d,%lf,%lf\n", &loc, &yy, &mm, &dd, &mx, &mn) == 6){
        printf("<%d> <%d> <%d> <%d> <%f> <%f>\n", loc, yy, mm, dd, mx, mn);
    }
}