【问题标题】:No errors or warnings but my code output is an endless stream没有错误或警告,但我的代码输出是无穷无尽的
【发布时间】:2020-03-28 20:09:20
【问题描述】:

我正在编写一个程序来使用冒泡排序对字符串指针数组进行排序。 到目前为止,我的代码没有任何错误或警告,但是当我运行它时,输出会不断循环。

我认为这可能是我的排序问题,但我并不积极。

这是我的主要内容:

int main(int argc,char**argv)
{
    int size =0;

    //array of string pointers
    char *wordPtr[] ={"Eric", "Andrew", "Sean", "Daniel"};

    //size is the size of the string
    size = (sizeof(wordPtr))/(sizeof(wordPtr[0]));

    //call funtion to print list
    printArray(size,wordPtr);

}

我有一个打印列表的功能:

void printArray(int size,char**wordPtr)
{

    //call sortArray to sort the list
    sortArray(size,wordPtr);

    //print ordered list    
    printf("Ordered List:\n");
    printf("--------------\n");
    printf("%s\n",wordPtr[0]);
    printf("%s\n",wordPtr[1]);
    printf("%s\n",wordPtr[2]);
    printf("%s\n",wordPtr[3]);

}

我怀疑是我的排序功能是问题所在。我也不确定我是否正确排序了字符串。我觉得我只是错过了一些愚蠢的东西,但我似乎看不到它。

void sortArray(int size, char**wordPtr)
{
    char * temp = NULL;
    int x = 3;
    int j;
    int i; 

    //sort list
    for (j=0;j<=x;j++)
    {

        for (i=0; i< size-1; i++)
        {

            if (wordPtr[i][0] > wordPtr[i+1][0])
            {

                temp = wordPtr[i];
                wordPtr[i] = wordPtr[i+1];
                wordPtr[i+1] = temp;
            }

        }
    }

    //pass ordered list back to printArray 
    printArray (size,wordPtr);

}

任何帮助!

【问题讨论】:

  • printArray 调用 sortArray 调用 printArray 调用 sortArray 等...这是故意的吗?
  • 不,我不是故意的,愚蠢的错误。谢谢,现在很好用!

标签: c arrays string sorting bubble-sort


【解决方案1】:

你现在一直在调用 printArray。 这是你的代码的作用

 main -> printArray -> sortArray ┐
              ^
              └------------------┘

来解决这个问题。您只需在您的 sortArray 方法中删除调用 printArray()。

    //pass ordered list back to printArray 
    printArray (size,wordPtr);

这是将有序列表传递回 printArray 的错误方法 这只是再次调用 printArray() 方法。

在此代码中,您不需要传递任何返回,因为您使用的是指针。

【讨论】:

  • 好的,有道理!谢谢!
猜你喜欢
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多