【问题标题】:Different outputs from the same C program来自同一 C 程序的不同输出
【发布时间】:2014-10-19 11:59:01
【问题描述】:

我有一个指针问题:

            SearchResults* pointy;

            pointy = returnResults();

            if(pointy != NULL && pointy->results[0] != NULL)
            {
                HandleResponse();
                printf("sharp");

            }else{
                //do other things
            }

            if(pointy == NULL){
                    printf("blunt");
            }
            if(pointy->results[0] == NULL){
                printf("wah!!!");
            }

在调试器中代码正常工作,我得到“尖锐”,但在 bash 终端中的相同条件下,我得到“哇!!!”

   typedef struct SearchResults
   {
   TreeNode* results[40];
   int searchIndex;
   } SearchResults;

   SearchResults*  lostAndFound;




 SearchResults* returnResults()
 {
  return lostAndFound;
  }

【问题讨论】:

  • returnResults() 在做什么?
  • 您是指标题中的!= 而不是==
  • 我们将编写更多代码来识别该问题。或者至少你是如何调用程序的
  • Abhi 它是服务器(605 行)&& binaryTree(300 行)搜索功能的一部分,可以返回多个结果。 pointy->results[n] 应该是指向树节点的指针
  • 肯定需要更多代码。如果程序超过 900 行,那么您需要将其缩小以隔离问题。你不能指望我们调试一个 900 行的程序,但当你只显示它的 25 行时肯定不会。我们不是魔术师。 “应该是指向树节点的指针”还不够好 - 它“应该”工作正常,但显然不是。

标签: c pointers


【解决方案1】:

在调试和发布变体中都发现了一个问题,有一个 .csv 文件。调试对其进行读写操作非常好,而发布似乎将其推向虚无。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    相关资源
    最近更新 更多