C 如何将字符分配给数组?
问题:C 如何将字符分配给数组?,c,C,问题: 如何将strchar分配给tempStr 如何将compress函数中的str替换为tempStr?我认为str=tempStr是错误的 谢谢您应该使用memcpy或strcpy(如果它是以null结尾的字符串) 在这个例子中,tempStr没有定义,所以我猜它是一个chars的数组。虽然,您可能需要在某个地方使用循环…1。您的代码缺少tempStr定义,例如char tempStr[LENGTH],请确保LENGTH足够大。 2.C字符串应该以'\0'结尾,因此需要在循环后设置temp
str
char
分配给tempStr
compress
函数中的str
替换为tempStr
?我认为str=tempStr
是错误的谢谢您应该使用
memcpy
或strcpy
(如果它是以null结尾的字符串)
在这个例子中,
tempStr
没有定义,所以我猜它是一个char
s的数组。虽然,您可能需要在某个地方使用循环…1。您的代码缺少tempStr定义,例如char tempStr[LENGTH],请确保LENGTH足够大。
2.C字符串应该以'\0'结尾,因此需要在循环后设置tempStr[j]='\0'。然后您可以使用strcpy copy tempStr to str。您似乎对字符串、数组和指针有点困惑
charstr[]=“abc 123”
表示内存中的某个地方有一个包含这些字符的数组。当这样声明时,“str”是常量,不能设置为指向其他地方
相反,您需要分配每个单独的字符,这是您开始做的事情
在函数中使用语句tempStr[j]=str[i]:
您需要循环遍历str中的字符并检查每个字符,然后将字符分配给tempStr,tempStr至少应与原始str[]数组一样大
差不多
int compress(char str[]) {
char tempStr [256];
int i,j, counter=0;
if (!isdigit(str[i]) && (!isspace(str[i]))) {
tempStr[j] = str[i];
j++;
printf("%c", tempStr[i]);
} else {
counter++;
}
str = tempStr;
}
char str[] = "abc abc abc 123";
result = compress(&str);
然后释放缓冲区
strcpy( str, tempStr );
鲍勃是你叔叔
free( tempStr );
tempStr
是一个可容纳256个字符的字符数组
但是这个语句会发生什么-str=tempStr代码>?
当您说,tempStr
时,您得到的是指向数组第一个元素的指针(即&tempStr[0])。因此,使用该语句,实际上并不是将tempStr
的元素复制到str
。右值的类型为char*
,但左值的类型为char[]
,这两种类型不兼容,导致编译错误
要实际复制数组的元素,应该使用
strcpy
变量i
的确切定义位置?我认为您的示例中缺少了示例的一部分。@Edwin:我明白了I
的定义。(我没有看到任何关于这个问题的编辑历史)。有趣的是,我可以发誓以前没有。也许我只是起得太晚了。
free( tempStr );
char tempStr [256];