C 在循环中消除环

C 在循环中消除环,c,C,我正在尝试遍历char* 有没有办法将这些char*字符串重置为空白 我正在尝试从1重置并发送1 我的代码还有其他问题吗。。它只复制阵列中的第一个文件 for(i = 0; i < 3; i++) { from1 = " "; send1 = " "; from1 = strncat(fileLocation,filesToExport[i],50); send1 = strncat(whereAmI,filesToExport[i],50);

我正在尝试遍历
char*

有没有办法将这些
char*
字符串重置为空白

我正在尝试从1重置并发送1

我的代码还有其他问题吗。。它只复制阵列中的第一个文件

 for(i = 0; i < 3; i++)
 {
     from1 = " ";
     send1 = " ";
     from1 = strncat(fileLocation,filesToExport[i],50);
     send1 = strncat(whereAmI,filesToExport[i],50);

     CopyFile(from1,send1,TRUE);
     printf("%s\n",from1);
     printf("%s",send1);
 }
(i=0;i<3;i++)的

{
from1=“”;
send1=“”;
from1=strncat(fileLocation,filesToExport[i],50);
send1=strncat(wheremi,filesToExport[i],50);
CopyFile(from1,send1,TRUE);
printf(“%s\n”,from1);
printf(“%s”,send1);
}

最简单的方法是将第一个字节设置为0。像这样:

from1[0] = 0;
send1[0] = 0;
C/C++通过查找0字节来检查
char*
字符串的结尾。它不在乎接下来会发生什么。

你是说像这样

send1[0] = 0;
from1[0] = 0;

字符串以nul结尾,这意味着它们的末尾有一个零字符。您可以将字符串中的第一个字符设置为零,将其截断为空:

from1[0] = '\0';
另一种方法是复制空白字符串:

strcpy(from1, "");

要将字符串清除为空,以便
strncat()
具有要连接的空字符串,只需执行以下操作:

from1[0] =  '\0';
这将第一个字符设置为零终止符,表示字符串的结束,从而使字符串的长度为0。这假设
from1
是一个实际可修改的
char
缓冲区,但是调用
strncat()
意味着它是一个缓冲区。

您所说的“空白”是什么意思?归零、空格还是空

要填充内存区域,最好使用memset(),所以

#包括
memset(pBuffer,,,长度);/*填空*/
pBuffer[length]='\0';/*记住在使用memset*时手动终止null
memset(pBuffer,'\0',长度);/*用零填充*/
pBuffer[0]='\0';/*将第一个元素设置为null——有效地设置字符串
*到长度0
*/

您正在复制到
filelocation
wheremi
。它们是缓冲区还是字符串?您可能正在注销字符串的结尾

我认为您最好分配一个大小合适的缓冲区

fromLen = strlen(fileLocation);
fileLen = strlen(filesToExport[i]);

from1 = malloc(fromLen + fileLen + 1);

/* add check here that string fits */

strcpy( from1, filelocation);
strcat( from1 + fromLen, filesToExport[i]);

/** etc **/

free(from1);

哪个字符*字符串??FileToExport数组中的字符串?我确信这段代码是错误的,您不能以这种方式重用fileLocation。请看我下面的建议,我完全同意史蒂文的意见。char是这里的正确类型。感谢您使用正确的文字:这将在filelocation的开始处设置一个null,因此下次循环时它是错误的!要么将null放在原始文件位置的末尾,要么使用单独的缓冲区。文件位置似乎是目标的目录部分,我们只是将其删除。C:/dir/下一次在循环中被传递到C:/dir/theFileToCopy,我们将把空值放在位置7,在t上,而不是在0上,在C中的C上:
fromLen = strlen(fileLocation);
fileLen = strlen(filesToExport[i]);

from1 = malloc(fromLen + fileLen + 1);

/* add check here that string fits */

strcpy( from1, filelocation);
strcat( from1 + fromLen, filesToExport[i]);

/** etc **/

free(from1);