簡體   English   中英

C分段錯誤錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM