任何人都可以解释这段代码的工作原理吗?
#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?任何人都可以逐行解释这个代码吗?
答案 0 :(得分:3)
我不知道为什么在这段代码中使用了变量?
started
变量用于确定这是否是第一次循环。在第二次及以后的过程中,会打印换行符,因此您不必始终在同一行上打印。
基本上,这段代码执行一个循环,重复读取3个值(直到用户点击输入而不键入3个值),并打印出来。第一次没有打印换行符,但每隔一段时间打印一个逗号+换行符。
答案 1 :(得分:0)
注意“started = 1;”。
在循环的第一次运行时,不需要添加逗号分隔符。赋值后,将在每个参数后添加逗号。
答案 2 :(得分:0)
scanf()
返回值3
,进入循环,
while(scanf(“%f,%f,%79 [^ \ n]”,&amp;纬度,&amp;经度,信息)== 3){
由于started
被声明为0
,if
无法执行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}}退出时,
}