【发布时间】:2013-09-04 00:43:08
【问题描述】:
有人告诉我像这样使用strlcpy 函数而不是strcpy
#include <stdio.h>
#include <string.h>
void main()
{
char var1[6] = "stuff";
char var2[7] = "world!";
strlcpy(var1, var2, sizeof(var2));
printf("hello %s", var1);
}
当我编译文件时 它给了我以下错误:
C:\Users\PC-1\AppData\Local\Temp\ccafgEAb.o:c.c:(.text+0x45): undefined referenc
e to `strlcpy'
collect2.exe: error: ld returned 1 exit status
注意:我已经安装了 MinGW(Minimalist GNU for Windows),gcc 版本是 4.7.2
有什么问题?
【问题讨论】:
-
我没说是。 :)
-
var1 只有 6 个字符空间,您正在尝试将 6 个字符复制到它。是不是'你错过了我们的好旧'\0'或者你不打算写过去的var1缓冲区?
-
@NlightNFotis 很抱歉,但我不知道每个编译器都有自己的库
-
@ameen 你不用担心,你不应该什么都知道,这很好。您使用的函数通常是目标系统提供的 C 库的一部分。类 Unix 系统通常带有
glibc或变体。您正在使用 Windows,因此您正在使用的编译器(gcc的改编版本)包含了c library所需的内容,以防目标系统未提供它,因此为你写的程序。 -
看看 4 年半前的自己……我在哪里……我学到了多少……给我一种美好的感觉!