簡體   English   中英

我如何使程序中止(沒有任何庫)

[英]How do I make my program abort (without any lib)

我在課堂上做一個練習,我必須在C中復制strstr()函數(來自<string.h>庫)。 這是我的代碼

char *ft_strcpy(char *dest, char *src)
{
    int i;

    i = 0;
    while (src[i] != '\0')
    {
        dest[i] = src[i];
        i++;
    }
    dest[i] = '\0';
    return (dest);
}

該代碼具有完整的功能,但是當我嘗試使用小於src字符串的dest字符串時,它顯示出無法預測的結果,最終也覆蓋了src 原始的strstr()函數的答案是在那種情況下中止程序。 鑒於我無法使用abort()函數,如何使程序中止?

您必須檢查您的字符串。 可能其中之一是NULL。

當您這樣做: While (str[i] ..)

您不知道(str)是否為NULL。

做: While (str && str[i] != '\\0')

好多了

您還可以檢查dest是否適合malloc,因為如果您的字符串dest沒有足夠的內存,則無法分配值。

我建議一個緊湊的實現

char * ft_strcpy(char * dest, const char * src) {
    if (strlen(dest) < strlen(src)) { /* abort(); or exit(1); */ }
    char * s = dest;
    while (*dest++ = *src++);
    return s;
}

實際的邊界檢查是在更安全的strcpy版本即strcpy_s 您可以在Safe C Library中找到一個實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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