读书人

一段程序输出的迷惑。

发布时间: 2012-09-10 22:20:12 作者: rapoo

一段程序输出的疑惑。。

C/C++ code
#include <stdio.h>#include <stdlib.h>int main(void){  long num1 = 234567L;                       /* Input values...              */  long num2 = 345123L;  long num3 = 789234L;  long num4 = 0L;                            /* Values read from the file... */  long num5 = 0L;  long num6 = 0L;  float fnum = 0.0f;                         /* Value read from the file     */  int   ival[6] = { 0 };                     /* Values read from the file    */  FILE *pfile = NULL;                        /* File pointer                 */  char *filename = "C:\\myfile.txt";  pfile = fopen(filename, "w");                 /* Create file to be written */  if(pfile == NULL)  {    printf("Error opening %s for writing. Program terminated.", filename);    exit(1);  }  fprintf(pfile, "%6ld%6ld%6ld", num1, num2, num3);   /* Write file          */  fclose(pfile);                                      /* Close file          */  printf("\n %6ld %6ld %6ld", num1, num2, num3);   /* Display values written */  pfile = fopen(filename, "r");                       /* Open file to read   */  fscanf(pfile, "%6ld%6ld%6ld", &num4, &num5 ,&num6); /* Read back           */  printf("\n %6ld %6ld %6ld", num4, num5, num6);      /* Display what we got */  rewind(pfile);                          /* Go to the beginning of the file */ [color=#FF0000] fscanf(pfile, "%2d%3d%3d%3d%2d%2d%3f", &ival[0], &ival[1], /* Read it again */                      &ival[2], &ival[3], &ival[4] , &ival[5], &fnum);[/color]  fclose(pfile);                                    /* Close the file and    */  remove(filename);                                 /* delete physical file. */  /* Output the results */  printf("\n");  for(int i = 0 ; i < 6 ; i++ )    printf("%sival[i] = %d", i == 4 ? "\n\t" : "\t", i, ival[i]);  printf("\nfnum = %f\n", fnum);  return 0;}

为什么ival的输出是下面的这样,而不是22,456,734,512,37,89呢??求助
C/C++ code
    ival[i] = 0    ival[i] = 1    ival[i] = 2    ival[i] = 3    ival[i] = 4    ival[i] = 5


[解决办法]
printf("%sival[i] = %d", i == 4 ? "\n\t" : "\t", i, ival[i]);
第一个%s对应参数列表中的格式符
第二个%d对应后面参数列表中的循环变量i

明显的书写错误,格式字符串中的[i]应该改成[%d]
多动脑,少提问

读书人网 >C语言

热点推荐