我想将下面的字符数组传递给一个函数并在那里使用它。我想按原样逐个打印这个字符串,但我唯一可以访问的字符是这个字符串的第一个字符。我以为*string++会给我下一个元素的地址,因此也就是下一个字符的地址。
char* string[] = {
"Garbage,",
"",
"Garbage garbage",
"Garbage garbage Garbage garbage",
"Garbage Garbage Garbage Garbage Garbage ",
"Garbage Garbage Garbage ",
"Garbage Garbage ",
"",
"Garbage ,",
"Garbage "
};这就是我正在尝试做的事情。那么我到底做错了什么呢?
while(**string != '\0'){
if(**string == '\n'){
printf("\n");
}
printf("%c\n", **string);
*string = *(string + 1);
}发布于 2021-03-19 05:51:02
string是一个数组。它本身不是一个可修改的左值。(使用纯正的火焰喷射器)。
您可以使用类似于*id++的语法,但必须使用适当类型的指针遍历数组才能执行此操作。
示例
#include <stdio.h>
int main()
{
const char *string[] =
{
"Garbage,",
"Garbage garbage",
"Garbage garbage Garbage garbage",
"Garbage Garbage Garbage Garbage Garbage ",
"Garbage Garbage Garbage ",
"Garbage Garbage ",
"",
"Garbage ,",
"Garbage "
};
// one way to walk with a pointer.
const char * const *str = string;
while (**str)
puts(*str++);
}输出
Garbage,
Garbage garbage
Garbage garbage Garbage garbage
Garbage Garbage Garbage Garbage Garbage
Garbage Garbage Garbage
Garbage Garbagehttps://stackoverflow.com/questions/66699489
复制相似问题