Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.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
C Typedef结构查找程序不断崩溃_C - Fatal编程技术网

C Typedef结构查找程序不断崩溃

C Typedef结构查找程序不断崩溃,c,C,我正在尝试编写一个控制台应用程序,其中用户进入城市,然后程序在typedef结构中查找城市名称,并继续显示城市的纬度和经度坐标。我的程序显示没有错误,但似乎每次我进入一个城市并按enter键时,控制台应用程序都会显示city not found,然后关闭。下面是typdef结构中几个城市的代码(完整结构包含200个变量) #包括 #包括 #定义最大城市长度35 类型定义结构{ 字符名称[MAX_CITY_LEN]; 浮动纬度; 浮动经度; }地点;; 地点= {{“苏格兰阿伯丁”,57.15,-

我正在尝试编写一个控制台应用程序,其中用户进入城市,然后程序在typedef结构中查找城市名称,并继续显示城市的纬度和经度坐标。我的程序显示没有错误,但似乎每次我进入一个城市并按enter键时,控制台应用程序都会显示city not found,然后关闭。下面是typdef结构中几个城市的代码(完整结构包含200个变量)

#包括
#包括
#定义最大城市长度35
类型定义结构{
字符名称[MAX_CITY_LEN];
浮动纬度;
浮动经度;
}地点;;
地点=
{{“苏格兰阿伯丁”,57.15,-2.15},
{“澳大利亚阿德莱德”,34.92138.6},
{“美国纽约州奥尔巴尼”,42.67,-73.75},
{“美国新墨西哥州阿尔伯克基”,35.08,-106.65},
{“阿尔及利亚阿尔及尔”,36.83,3.0},
{“美国德克萨斯州阿马里洛”,35.18,-101.83},
{“荷兰阿姆斯特丹”,52.37,4.88},
{“安克雷奇,AK,美国”,61.22,-149.9},
{“土耳其安卡拉”,39.92,32.92},
{“巴拉圭亚松森”,25.25,-57.67},
{“希腊雅典”,37.97,23.72},
{“美国佐治亚州亚特兰大”,33.75,-84.38},
{“新西兰奥克兰”,36.87174.75},
{"",999,999}};
int main()
{
int j;
int=0;
查尔城[MAX_city_LEN];
int citySize=(sizeof(places)/sizeof(places[0]);
printf(“请输入城市名称:\n”);
scanf_s(“%s”和城市,最大城市,标准);
城市[strlen(城市)-1]='\0';
对于(j=0;j试试这个

int found=0;
char city[MAX_CITY_LEN];
int citySize=(sizeof(places)/sizeof(places[0]));
int j, len;

printf("Please Enter the Name of a City: \n");
scanf_s("%34s", city, MAX_CITY_LEN);

len = strlen(city);
for(j=0;j<citySize;j++){
    if(strncmp(city, places[j].name, len)==0 && places[j].name[len]==','){
        found=1;                                
        printf("lat = %f, long = %f",places[j].latitude,places[j].longitude); 
        break;                               
    }
}
if(!found)
    printf("City not found");
int-found=0;
查尔城[MAX_city_LEN];
int citySize=(sizeof(places)/sizeof(places[0]);
int j,len;
printf(“请输入城市名称:\n”);
scanf_s(“34s”,城市,最大城市);
len=斯特伦(城市);

对于(j=0;j您是否尝试过调试代码?(使用断点并通过循环)尝试输入“Aberdeen,Scotlandd”,然后问自己为什么要执行
city[strlen(city)-1]='\0';
此外,程序是否真的崩溃了,或者只是正常终止?尝试
scanf_s(“%34s”,city,MAX_city_LEN);
并删除
城市[strlen(city)-1]='\0';
@AlexMcKean阅读Keith Thompson的向上投票的评论在进入循环之前打印您的输入。如果我输入“Aberdeen,Scotland”,它对我有效。另外,请注意它与精确字符串匹配,因此区分大小写和空格。您可以添加getch();返回之前,请暂停并查看您的输出。谢谢,这使程序正常运行。我能够在距离计算程序中使用它来计算城市之间的距离!
int found=0;
char city[MAX_CITY_LEN];
int citySize=(sizeof(places)/sizeof(places[0]));
int j, len;

printf("Please Enter the Name of a City: \n");
scanf_s("%34s", city, MAX_CITY_LEN);

len = strlen(city);
for(j=0;j<citySize;j++){
    if(strncmp(city, places[j].name, len)==0 && places[j].name[len]==','){
        found=1;                                
        printf("lat = %f, long = %f",places[j].latitude,places[j].longitude); 
        break;                               
    }
}
if(!found)
    printf("City not found");