`started`变量在这段代码中做了什么?

时间:2014-02-20 18:37:38

标签: c++ while-loop

任何人都可以解释这段代码的工作原理吗?

 #include <iostream>
#include <stdio.h>
using namespace std;
int main(int argc, char const *argv[])
{
     float longitude;
     float latitude;
     char info[80];
     int started = 0;

     cout << "Data = {";
     while (scanf("%f, %f, %79[^\n]", &latitude, &longitude, info) == 3)
     {
         if(started)
             printf(",\n");
         else
             started = 1;

         printf("{latitude: %f, longitude: %f, info: '%s'}",latitude, longitude, info);
     }

     return 0;
}

我不明白为什么使用started变量。为什么检查此变量的值始终设置为0?任何人都可以逐行解释这个代码吗?

3 个答案:

答案 0 :(得分:3)

  

我不知道为什么在这段代码中使用了变量?

started变量用于确定这是否是第一次循环。在第二次及以后的过程中,会打印换行符,因此您不必始终在同一行上打印。

基本上,这段代码执行一个循环,重复读取3个值(直到用户点击输入而不键入3个值),并打印出来。第一次没有打印换行符,但每隔一段时间打印一个逗号+换行符。

答案 1 :(得分:0)

注意“started = 1;”。

在循环的第一次运行时,不需要添加逗号分隔符。赋值后,将在每个参数后添加逗号。

答案 2 :(得分:0)

scanf()返回值3,进入循环,

  

while(scanf(“%f,%f,%79 [^ \ n]”,&amp;纬度,&amp;经度,信息)== 3){

由于started被声明为0if无法执行else部分,

if(started)
      printf(",\n");

else中,已开始变为1

  else
     started = 1;

打印三个值,

   printf("{latitude: %f, longitude: %f, info: '%s'}",latitude, longitude, info);

此处started 1 \n打印scanf(),直到3不等于{{1}}退出时,

  

}