如何初始化char数组并在C之前的strcpy()之前的循环中一次又一次地清空它?

时间:2009-10-02 18:12:25

标签: c loops initialization char

我想在循环中每次重新初始化

     char d[90];   
     while(ptr != NULL)
    {
        printf("Word: %s\n",ptr);
        //int k = 0;
        strcpy(d, ptr);
        d[sizeof(d)-1] = '\0';
        //something more
        ....
        ....
     }

4 个答案:

答案 0 :(得分:4)

strcpy()之前无需做任何事情。在缓冲区strcpy()上调用d将覆盖缓冲区中的任何内容,并在调用时保留缓冲区,其中包含ptr指向的字符串。不需要将最后一个字符分配给'\ 0'。

当然,如果由于您不确定strcpy()是否会覆盖d而进行明确终止,那么您就会遇到问题。您应该在副本前strlen()使用ptr以确保其适合,或者如果您拥有snprintf()则使用{{1}}。

答案 1 :(得分:0)

memset(d,0,90)?

答案 2 :(得分:0)

放松是完全正确的。在strcpy()之前你不需要做任何事情。但是,如果您发现自己以后需要将某些内存初始化为特定模式,则可以使用:

void* pointerToMemory;          // Initialize this appropriately
unsigned char initValue = 0;    // Or whatever 8-bit value you want
size_t numBytesToInitialize;    // Set this appropriately

memset(pointerToMemory, initValue, numBytesToInitialize);

答案 3 :(得分:0)

只需strcpy(d, ptr)strcpy会在最后为您添加NULL终结符,当然假设d至少可以保留与ptr一样多的字符。