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