我想在循环中每次重新初始化
char d[90];
while(ptr != NULL)
{
printf("Word: %s\n",ptr);
//int k = 0;
strcpy(d, ptr);
d[sizeof(d)-1] = '\0';
//something more
....
....
}
答案 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
一样多的字符。