C - 关于字符串的预处理器声明
C - Regarding the preprocessor declaration of a string
所以我从教科书上输入了这个小程序。
#include <stdio.h>
#define string char*
int main(void) {
string a[] = { "I", "like", "to", "fight," },
b[] = {"pinch,","and","bite."};
printf("%s %s %s %s %s %s %s\n", a[0], a[1], a[2], a[3], b[0], b[1], b[2]);
return 0;
}
就目前而言,它会抛出以下错误:
exit status 1
main.c: In function 'main':
main.c:7:18: error: excess elements in char array initializer
b[] = {"pinch,","and","bite."};
main.c:7:18: note: (near initialization for 'b')
main.c:7:24: error: excess elements in char array initializer
b[] = {"pinch,","and","bite."};
main.c:7:24: note: (near initialization for 'b')
显然,我们的目标是让这项工作成功。该书暗示,在 #define
预处理器中,可以添加一个字符以使其工作。而且,错误都集中在 b
字符串周围,我认为它会是 b
。但事实并非如此。要么,要么我把 b
放在了错误的位置。我对这个问题的理解是,虽然它为 a 字符串创建了足够的 space,但它不是为 b
字符串创建的。
如有任何意见,我们将不胜感激。
好吧,如果你有
int *a, b;
您可能很快就会发现您有一个 int 指针和一个 int。您的代码也发生了同样的情况
string a[] = { "I", "like", "to", "fight," },
b[] = {"pinch,","and","bite."};
更改为
char* a[] = { "I", "like", "to", "fight," },
b[] = {"pinch,","and","bite."};
所以你有一个 char 指针数组和一个 char 数组。您需要添加的单个字符是 *
以使 b
成为一个字符指针数组。
char* a[] = { "I", "like", "to", "fight," },
*b[] = {"pinch,","and","bite."};
所以我从教科书上输入了这个小程序。
#include <stdio.h>
#define string char*
int main(void) {
string a[] = { "I", "like", "to", "fight," },
b[] = {"pinch,","and","bite."};
printf("%s %s %s %s %s %s %s\n", a[0], a[1], a[2], a[3], b[0], b[1], b[2]);
return 0;
}
就目前而言,它会抛出以下错误:
exit status 1
main.c: In function 'main':
main.c:7:18: error: excess elements in char array initializer
b[] = {"pinch,","and","bite."};
main.c:7:18: note: (near initialization for 'b')
main.c:7:24: error: excess elements in char array initializer
b[] = {"pinch,","and","bite."};
main.c:7:24: note: (near initialization for 'b')
显然,我们的目标是让这项工作成功。该书暗示,在 #define
预处理器中,可以添加一个字符以使其工作。而且,错误都集中在 b
字符串周围,我认为它会是 b
。但事实并非如此。要么,要么我把 b
放在了错误的位置。我对这个问题的理解是,虽然它为 a 字符串创建了足够的 space,但它不是为 b
字符串创建的。
如有任何意见,我们将不胜感激。
好吧,如果你有
int *a, b;
您可能很快就会发现您有一个 int 指针和一个 int。您的代码也发生了同样的情况
string a[] = { "I", "like", "to", "fight," },
b[] = {"pinch,","and","bite."};
更改为
char* a[] = { "I", "like", "to", "fight," },
b[] = {"pinch,","and","bite."};
所以你有一个 char 指针数组和一个 char 数组。您需要添加的单个字符是 *
以使 b
成为一个字符指针数组。
char* a[] = { "I", "like", "to", "fight," },
*b[] = {"pinch,","and","bite."};