[英]C Segmentation Fault Error
我當前正在編寫一個程序,其目的是將字符串數組發送給函數,然后該函數將對該數組進行冒泡排序,將數組中較短的字符串移至最前面,並將較長的字符串移至因此,預期輸出應為"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);
}
還有一個關於字符串的快速問題。 早些時候我凝視着我將字符串存儲在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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.