下面有一段代码,将文本_dut1_serial_log.txt
附加到提供的文件名。提供的文件名是targetP
指向的结构中的变量。
文本_dut1_serial_log.txt
长20个字符。我的问题是当我为空终止符调用malloc时是否需要+1
?
char *filename_ending = "_dut1_serial_log.txt";
char *filename_with_extension;
prv_instance_t *targetP = threadParams->targetP;
/*append filename ending "_dut1_serial_log.txt" to filename supplied*/
filename_with_extension = malloc(strlen(targetP->output_filename)+1+20);
strcpy(filename_with_extension, targetP->output_filename); /* copy name into the new var */
strcat(filename_with_extension, filename_ending); /* add the extension */
最佳答案
strcpy
和strcat
都将把NUL终止符从源字符串复制到目标缓冲区。
因此,您确实需要在目标缓冲区中为该终止符保留空间。
为了避免任何疑问,"_dut1_serial_log.txt"
是一种const char[21]
类型。
关于c - c malloc()-我是否需要为空终止符分配空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47652159/