首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >memset +空格+ memcpy

memset +空格+ memcpy
EN

Stack Overflow用户
提问于 2012-01-13 20:17:48
回答 3查看 3K关注 0票数 0

如何将大小为100字符数组设置为空格,然后将10个字符从其他字符复制到相同的字符串。例如:

有一个char数组a100要做:将其全部设置为空白

现在有了另一个数组: b10 To do :将此数组复制到前一个数组中

代码语言:javascript
复制
What iam doing is : memset(a, ' ', sizeof(a));
350         memcpy(a,b, strlen(b))

但是在复制了10个字符之后,我没有得到我设置的空间。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-13 20:26:57

尝试以下操作:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define LENGTH 100

int main(int argc, char *argv[])
{
    char *a = NULL;
    char b[10] = "abcdefghi"; /* note that this has a trailing null character */

    a = malloc(LENGTH + 1);
    if (a) {
        *(a + LENGTH) = '\0';
        memset(a, ' ', LENGTH);
        fprintf(stdout, "a (before):\t[%s]\n", a);
        memcpy(a, b, sizeof(b) - 1); /* strip trailing null */
        fprintf(stdout, "a (after):\t[%s]\n", a);
        free(a);
    }

    return EXIT_SUCCESS;
}

运行以下命令:

代码语言:javascript
复制
$ gcc -Wall test.c
$ ./a.out
a (before):     [...100 spaces...........]
a (after):      [abcdefghi...91 spaces...]                                                                                           ]
票数 1
EN

Stack Overflow用户

发布于 2012-01-13 20:27:05

数组的最后一个位置缺少空\0字符。

票数 0
EN

Stack Overflow用户

发布于 2013-10-19 09:34:43

您不认为需要将类型强制转换为(char *)

代码语言:javascript
复制
a = (char *) malloc(LENGTH + 1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8850448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档