【C语言】结构体数据处理异常问题

每个城市信息由城市名(字符串)和位置坐标组成(x,y)。设计实现一程序,完成如下功能:
(1)从键盘或文件输入各城市信息
(2)按城市名字非递减排序后输出
(3)输入某个位置信息,查询该位置的城市名称,要求能多次查询。

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

#define MAXSIZE 20

typedef char ElemType; 
struct info
{
    ElemType name[MAXSIZE];
    int x;
    int y;
};

int main()
{
    struct info city[MAXSIZE];
    //从键盘输入信息
    int i=0,count=0;
    printf("请输入城市名和位置坐标x,y,以空格键隔开(输入“q 0 0”以结束):");
    while((scanf("%s %d %d",city[i].name,&city[i].x),&city[i].y)!=0)
    {
        if(i>=MAXSIZE)
        {
            printf("超出最大输入个数!");
            break;
        }
        if(strcmp(city[i].name,"q")==0)
         break;
        i++;
        count++;
        printf("请输入城市名和位置坐标x,y,以空格键隔开:");
    } 

    //排序
    int m,n;
    struct info temp;
    for(m=0;m<count-1;m++)
    {
        for(n=0;n<count-m-1;n++)
        {
            if(strcmp(city[n].name,city[n+1])>0) 
            {
                temp=city[n];
                city[n]=city[n+1];
                city[n+1]=temp;
            }
        }
    }

    //按非递减顺序输出
    for(i=0;i<count;i++)
    {
        printf("%s  %d  %d  \n",city[i].name,city[i].x,city[i].y);
    } 


    //查询
    int x,y;
    printf("请输入您要查找的位置坐标x,y,之间以空格隔开,以“q q”结束操作:");
    while(scanf("%d %d",&x,&y)!=0)
    {
        for(i=0;i<count;i++)
        {
            if(x==city[i].x&&y==city[i].y)
             {
                printf("\n您要查找的城市为 %s ",city[i].name);
                break;
             }
            else if(i==count-1)
            {
                printf("\n未找到匹配的城市!");
            }
        }
    } 
    printf("\n感谢您的使用,再见!");

    return 0;
}

代码运行正常,排序、查找功能都正常,但输入数据后,输出(打印在屏幕上)的数据坐标y全部变为0,请问这是怎么回事,看了很久没有看出来

while((scanf("%s %d %d",city[i].name,&city[i].x),&city[i].y)!=0) 这句的city[i].x后面怎么有个括号