代码之家  ›  专栏  ›  技术社区  ›  Alex Xander

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

  •  0
  • Alex Xander  · 技术社区  · 15 年前

    每次循环时我都要重新初始化

         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 回复  |  直到 15 年前
        1
  •  4
  •   unwind    15 年前

    “以前”没必要做任何事 strcpy() . 打电话 STRCYP() 缓冲器上 d 将覆盖缓冲区中的任何内容,并使缓冲区保留指向的字符串 ptr 打电话的时候。不需要将最后一个字符分配给'\0'。

    当然,如果你做了明确的终止,因为你不确定 STRCYP() 将覆盖 D ,那你就有问题了。你应该使用 strlen() PTR 在复制之前确保它适合,或使用 snprintf() 如果你有。

        2
  •  0
  •   user180100    15 年前

    内存集(D,0,90)?

        3
  •  0
  •   nall    15 年前

    放松是完全正确的。在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);
    
        4
  •  0
  •   Ashwin    15 年前

    简单地做 strcpy(d, ptr) . strcpy 将在末尾为您添加空终止符,当然假定 d 最多可容纳个字符 ptr .