没有错误或警告,但我的代码输出源源不断
No errors or warnings but my code output is an endless stream
我正在编写一个程序,使用冒泡排序对字符串指针数组进行排序。
到目前为止,我的代码没有任何错误或警告,但是当我 运行 它的输出不断循环。
我认为这可能是我排序的问题,但我不是肯定的。
这是我的主要内容:
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。
这是您的代码所做的
main -> printArray -> sortArray ┐
^
└------------------┘
解决这个问题。您只需删除 sortArray 方法中的调用 printArray()。
//pass ordered list back to printArray
printArray (size,wordPtr);
这是将有序列表传回 printArray 的错误方法
这只是再次调用 printArray() 方法。
在此代码中,您不需要传递任何参数 return,因为您使用的是指针。
我正在编写一个程序,使用冒泡排序对字符串指针数组进行排序。 到目前为止,我的代码没有任何错误或警告,但是当我 运行 它的输出不断循环。
我认为这可能是我排序的问题,但我不是肯定的。
这是我的主要内容:
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。 这是您的代码所做的
main -> printArray -> sortArray ┐
^
└------------------┘
解决这个问题。您只需删除 sortArray 方法中的调用 printArray()。
//pass ordered list back to printArray
printArray (size,wordPtr);
这是将有序列表传回 printArray 的错误方法 这只是再次调用 printArray() 方法。
在此代码中,您不需要传递任何参数 return,因为您使用的是指针。