我最近兩個月才學習編程,這是我第一次使用 StackOverflow,所以希望我沒有搞砸格式。我已經堅持這個練習幾天了。
描述:
引數: #1。要拆分的字串。#2. 分隔符。
回傳值:拆分產生的新字串陣列。如果分配失敗,則為 NULL。
允許的外部函式: malloc、free
分配(使用 malloc(3))并回傳通過使用字符 'c' 作為分隔符拆分 's' 獲得的字串陣列。陣列必須以 NULL 指標結束。
我當然知道有一種更簡單的方法可以做到這一點,但我非常害怕在網上搜索,因為我覺得我通過嘗試欺騙了自己。我決定做的是創建一個計數器函式來檢查分隔符之間有多少個單詞(也就是第一個陣列的大小),然后我檢查每個單詞的大小并將其存盤在我用來創建的整數陣列中第一個陣列將指向的每個陣列的長度。然后我填充每個陣列。
我使用的測驗器說我在 5 個測驗中的兩個中出現分段錯誤,即使我的函式的輸出與測驗的假設輸出匹配。
我真的被困住了,并開始為落后于已經完成整個專案的朋友而感到非常難過。
希望有人能教我我做錯了什么。感謝您的時間!
char **ft_split(char const *s, char c)
{
int i;
int size;
int *elem;
char **new;
size = counter(s, c);
elem = sizeofeachstring(s, c);
i = 0;
if (s == NULL)
return (NULL);
new = malloc(sizeof(char *) * size);
if (new == NULL)
return (NULL);
while (i < size)
{
if (i < size)
new[i] = (char *)malloc(sizeof(char) * (elem[i] 1));
i ;
}
fillarrays(s, c, new);
return (new);
}
static int counter(char const *s, char c)
{
int count;
int i;
i = 0;
count = 0;
while (s[i])
{
while (s[i] == c)
i ;
if (s[i] != c && s[i])
count ;
while (s[i] != c && s[i])
i ;
}
return (count);
}
static int *sizeofeachstring(char const *s, char c)
{
int i;
int len;
int n;
int *elem;
int size;
i = 0;
len = 0;
n = 0;
size = counter(s, c);
elem = (int *)malloc(sizeof(int) * size);
while (s[i] != '\0')
{
if (s[i] != c)
len ;
if ((s[i] != c && s[i 1] == c && len > 0))
{
elem[n] = len;
len = 0;
n ;
}
i ;
}
return (elem);
}
static char **fillarrays(char const *s, char c, char **new)
{
int i;
int j;
int k;
j = 0;
i = 0;
k = 0;
while (s[i] != '\0')
{
while (s[i] == c)
i ;
if (s[i] == '\0')
break ;
if (s[i] != c)
{
new[j][k ] = s[i ];
if (s[i] == c)
{
new[j][k] = '\0';
if (s[i] != '\0' || s[i 1] != '\0')
{
j ;
k = 0;
}
}
}
}
return (new);
}
uj5u.com熱心網友回復:
在填充陣列中的單詞后嘗試用 NULL 填充 **new
char **ft_split(char const *s, char c)
{
...
new = malloc(sizeof(char *) * (size 1));
...
}
static char **fillarrays(char const *s, char c, char **new)
{
...
new[j] = NULL;
return (new)
}
從你的函式名稱來看,我認為你正在 42Network 學校之一學習你需要保護 malloc 的額外東西,這是一個規范錯誤
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/364808.html
上一篇:Javascript按特定順序重新排列嵌套陣列的陣列
下一篇:在React中反向填充陣列
