Zac*_*ago 0 c arrays string segmentation-fault
我正在编写一个程序,其目的是将一个字符串数组发送到一个函数,然后该函数将对数组进行冒泡排序,将数组中较短的字符串移动到前面并将较长的字符串移动到后面所以预期的输出应该是"shortest is cat, longest is elephant".
这似乎是直截了当但我得到了一个分段错误,我已经查看了代码的索引,但它似乎没有超出界限所以我不确定发生了什么.这是我的示例代码.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fx(char* array[],int size);
int main()
{
char* t[]= {"horse","elephant","cat","rabbit"};
int n;
n = sizeof(t)/ sizeof(t[0]);
fx(t,n);
printf("shortest is %s, longest is %s\n",t[0],t[n-1]);
}
void fx(char* array[],int size)
{
int i;
int current,next,unsorted;
char* stringTemp;
do {
unsorted = 0;
for(i = 0; i < size-1; i++)
current = strlen(array[i]);
next = strlen(array[i+1]);
if( current > next )
{
stringTemp = array[i];
array[i] = array[i+1];
array[i+1] = stringTemp;
unsorted = 1;
}
}
while(unsorted);
}
Run Code Online (Sandbox Code Playgroud)
关于字符串的快速问题.早些时候,我盯着我存储了字符串,char array[]但我得到错误说达到最大声明或类似的东西.那是我做过的事情还是你不能把字符串存储在这样的char数组中?
将for环形支架放在环体周围.
for(i = 0; i < size-1; i++){
current = strlen(array[i]);
next = strlen(array[i+1]);
if( current > next )
{
stringTemp = array[i];
array[i] = array[i+1];
array[i+1] = stringTemp;
unsorted = 1;
}
}
Run Code Online (Sandbox Code Playgroud)