Disaster_Star 2021-11-08 21:27 采纳率: 0%
浏览 24

if(ch1==G->vexs[j]&&ch2==G->vexs[k])为什么没有起到判断作用,如何才能判断两个string中的汉字相同?


#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
using namespace std;
#define MAX 100//最大顶点数
typedef struct
{//邻接矩阵结构
    int n,e;//顶点数n,边数e
    string vexs[MAX];//顶点数组
    int edges[MAX][MAX];//边的邻接矩阵
}MGraph;
void Menu()
{//显示菜单子函数
    printf("\n               简单城市交通网系统");
    printf("\n==============================================");
    printf("\n|              1--城市信息维护                 |");
    printf("\n|              2--连通信息维护                 |");
    printf("\n|              3--深度优先遍历                 |");
    printf("\n|              4--广度优先遍历                 |");
    printf("\n|              5--最小生成树                   |");
    printf("\n|              0--退出                         |");
    printf("\n==============================================");
    printf("\n请输入菜单号(0-5):");
}
void CreateMGraph(MGraph *G){
    FILE *fp=fopen("E:\\code\\sjjg\\计科Z62103班04_Graph.txt","rt+");
    if(fp==NULL){
        printf("读取文件失败!");
        fclose (fp);
    }
    string ch1,ch2;
    fscanf(fp,"%d",&G->n);
    fscanf(fp,"%d",&G->e);
    printf("顶点数为:%d\n",G->n);
    printf("边数为:%d\n",G->e);
    for(int i=0;i<G->n;i++){
        fscanf(fp,"%s",G->vexs[i]);
    }
    for(int i=0;i<G->n;i++){
        printf("%s\n",G->vexs[i]);
    }
    for(int i=0;i<G->n;i++){
        for(int j=0;j<G->n;j++){
            G->edges[i][j]=0;
        }
    }
    for(int i=0;i<G->n;i++){
        for(int j=0;j<G->n;j++)
            printf("%5d",G->edges[i][j]);
        printf("\n");
    }
    //邻接矩阵元素置0
    for(int i=0;i<G->e;i++){
        fscanf(fp,"%s",ch1);
        fscanf(fp,"%s",ch2);

        for(int j=0;j<G->n;j++){
            printf("%s",ch1);
            printf("%s\n",G->vexs[j]);
                for(int k=0;k<G->n;k++)
                    if(ch1==G->vexs[j]&&ch2==G->vexs[k]){
                        printf("%s",ch2);
                        printf("%s\n",G->vexs[k]);
                        fscanf(fp,"%d",&(G->edges[j][k]));
                        printf("%d\n",G->edges[j][k]);
                        G->edges[k][j]=G->edges[j][k];
                }
        }
    }
}
void DispMGraph(MGraph G){//图的邻接矩阵输出函数
    for(int i=0;i<G.n;i++){
        for(int j=0;j<G.n;j++)
            printf("%5d",G.edges[i][j]);
        printf("\n");
    }
}
void main(){
    MGraph G;
    CreateMGraph(&G);
    DispMGraph(G);
    system("pause");
}
  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-11-08 21:33
    关注

    从文件里用fscanf(fp,"%s",G->vexs[i])读取的如果是最后一个数据项,那么这个字符串末尾可能是换行符。所以你用没有换行符的ch1字符串比较是不相等的

    评论

报告相同问题?

问题事件

  • 创建了问题 11月8日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画