我一直无法使这段代码工作.我正在尝试获取要复制的字符数组,因此我可以计算出有多少令牌可以动态分配并保存它们以便检查环境变量.但是,当它试图strncpy原始字符串时,我保持segfaulting.
void echo(char *str1)
{
char *token, *temp;
char *saveptr1;
int j, i, k, counter;
char *copy;
strncpy(copy, str1, 80);
const char *delim = " ";
i = strlen(copy);
for(j = 0; j < i; j++, copy = NULL)
{
token = strtok_r(copy, delim, &saveptr1);
counter++;
if(token == NULL)
{
counter--;
break;
}
}
// initialize token array for echo
char *tokAr[counter];
for(j = 0; j < counter; j++)
tokAr[j] = malloc(80*sizeof(char));
for(j = 0, k = 0; j < …Run Code Online (Sandbox Code Playgroud) 我试图在C中编写一个程序,允许我通过FAT32文件系统映像.但是,我很难理解和应用方程式来收集正确的数据.我正在使用linux的debian发行版,因此维护了little-endian形式.下面是Microsoft网站上关于FAT32的伪代码,计算下一个要访问目录或文件的集群:
ThisFATSecNum = BPB_ResvdSecCnt + (FATOffset / BPB_BytsPerSec);
ThisFATEntOffset = REM(FATOffset / BPB_BytsPerSec);
FAT32ClusEntryVal = FAT32ClusEntryVal & 0x0FFFFFFF;
*((DWORD *) &SecBuff[ThisFATEntOffset]) =
(*((DWORD *) &SecBuff[ThisFATEntOffset])) & 0xF0000000;
*((DWORD *) &SecBuff[ThisFATEntOffset]) =
(*((DWORD *) &SecBuff[ThisFATEntOffset])) | FAT32ClusEntryVal;
Run Code Online (Sandbox Code Playgroud)
我不完全了解SecBuff字符数组正在做什么或它正在访问什么.DWORD应该是一个unsigned int,我不确定我是否理解后续的转换.任何光棚都非常受欢迎.
如果有人也可以解释我们应该如何通过基于集群的FAT32文件系统进行解释,那么我将非常感激,在我看来,即使集群分配确保了空间局部性,通过引用扇区也会更有效.我不完全了解如何进行字节读取以查找文件/文件夹的下一个群集.
我一直在尝试从源流到目标流执行基本复制.我以前一直在使用许多问题作为实现的好例子,例如如何将流保存到C#中的文件?.但是,当下面的代码执行时,它会在第一次运行时退出,表示没有要复制的数据.我的问题是如何判断源流是否包含从一个文件流到另一个文件的正确信息?
代码从上面的链接看起来像这样:
public static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[8192];
int len;
while ( (len = input.Read(buffer, 0, buffer.Length)) > 0)
{output.Write(buffer, 0, len);}
}
Run Code Online (Sandbox Code Playgroud)