如何使用c语言在linux中使用strset()
How to use strset() in linux using c language
我不能在 C 中使用 strset 函数。我正在使用 Linux,我已经导入了 string.h 但它仍然不起作用.我觉得 Windows 和 Linux 的关键字不一样,但是我在网上找不到修复;他们都在使用 Windows.
这是我的代码:
char hey[100];
strset(hey,'[=11=]');
ERROR:: warning: implicit declaration of function strset; did you
mean
strsep`? [-Wimplicit-function-declaration]
strset(hey, '[=13=]');
^~~~~~ strsep
strset
不是标准的 C 函数。您可以使用标准函数 memset
。它有以下声明
void *memset(void *s, int c, size_t n);
例如
memset( hey, '[=11=]', sizeof( hey ) );
首先strset
(或者说_strset
)是一个Windows特有的函数,它在任何其他系统中都不存在。通过阅读它的文档,它应该很容易实现。
但是您还有一个次要问题,因为您将一个 未初始化的 数组传递给该函数,该函数需要一个指向空终止字符串的第一个字符的指针。这可能会导致 未定义的行为。
解决这两个问题的方法是直接初始化数组:
char hey[100] = { 0 }; // Initialize all of the array to zero
如果您的目标是 "reset" 将现有的以 null 结尾的字符串全部设为零,则使用 memset
函数:
char hey[100];
// ...
// Code that initializes hey, so it becomes a null-terminated string
// ...
memset(hey, 0, sizeof hey); // Set all of the array to zero
或者,如果您想具体模拟 _strset
的行为:
memset(hey, 0, strlen(hey)); // Set all of the string (but not including
// the null-terminator) to zero
我不能在 C 中使用 strset 函数。我正在使用 Linux,我已经导入了 string.h 但它仍然不起作用.我觉得 Windows 和 Linux 的关键字不一样,但是我在网上找不到修复;他们都在使用 Windows.
这是我的代码:
char hey[100];
strset(hey,'[=11=]');
ERROR:: warning: implicit declaration of function
strset; did you mean
strsep`? [-Wimplicit-function-declaration] strset(hey, '[=13=]');^~~~~~ strsep
strset
不是标准的 C 函数。您可以使用标准函数 memset
。它有以下声明
void *memset(void *s, int c, size_t n);
例如
memset( hey, '[=11=]', sizeof( hey ) );
首先strset
(或者说_strset
)是一个Windows特有的函数,它在任何其他系统中都不存在。通过阅读它的文档,它应该很容易实现。
但是您还有一个次要问题,因为您将一个 未初始化的 数组传递给该函数,该函数需要一个指向空终止字符串的第一个字符的指针。这可能会导致 未定义的行为。
解决这两个问题的方法是直接初始化数组:
char hey[100] = { 0 }; // Initialize all of the array to zero
如果您的目标是 "reset" 将现有的以 null 结尾的字符串全部设为零,则使用 memset
函数:
char hey[100];
// ...
// Code that initializes hey, so it becomes a null-terminated string
// ...
memset(hey, 0, sizeof hey); // Set all of the array to zero
或者,如果您想具体模拟 _strset
的行为:
memset(hey, 0, strlen(hey)); // Set all of the string (but not including
// the null-terminator) to zero