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);