这是我的代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int x,y,i,j,k;
char c;
char n_avion[6][20]={'BOING747','AIRBUSA380','LEARJET45','DC10','ANTONOV32','CONCORDE'};
char c_avion[6][2]={'B0','AB','Lj','DC','AN','CO'};
int v_avion[6]={800,950,700,900,560,1400};
int r_avion[]={10000,12000,4500,8000,2500,16000};
printf("\nEntrer LE Code d'Avion s'il vous plait : ");
for(i=0; i<6 ;i++){
printf("%c", n_avion[i]);
}
当我尝试使用%c
打印输出n_avion时,它会给我päÿ¼└È
当我尝试使用%s
打印输出n_avion时,它会给我70502E
我真正想要的是这个BOING747
Plz任何帮助和谢谢
答案 0 :(得分:3)
有很多问题:
"
之间,而不是'
c_avion[6][2]
应为c_avion[6][3]
你需要为字符串终结符多一个字符串(字符串以NUL字符终止)printf("%c", n_avion[i])
使用了错误的字符串格式说明符,它应该是%s
而不是%c
\n
,否则名称将打印在一行中没有空格(尝试)更正后的代码:
int main()
{
int x, y, i, j, k;
char c;
char n_avion[6][20] = { "BOING747","AIRBUSA380","LEARJET45","DC10","ANTONOV32","CONCORDE" };
char c_avion[6][3] = { "B0","AB","Lj","DC","AN","CO" };
int v_avion[6] = { 800,950,700,900,560,1400 };
int r_avion[] = { 10000,12000,4500,8000,2500,16000 };
printf("\nEntrer LE Code d'Avion s'il vous plait : ");
for (i = 0; i < 6; i++) {
printf("%s\n", n_avion[i]);
}
}
BTW:我的结晶球告诉你迟早要用struct
。
其他提示:
请勿使用6
或3
之类的“幻数”,但请使用常量。
例如:
#define NAMELENGTH 20
#define SHORTNAMELENGTH 3
#define NBOFPLANES 6
...
char n_avion[NBOFPLANES][NAMELENGTH] = ...
char c_avion[NBOFPLANES][SHORTNAMELENGTH] = ...
...
etc.
答案 1 :(得分:2)
C区分&#39; x&#39;作为一个角色和&#34; x&#34;作为字符串(&#39; x&#39;和NULL字符)。你想打印字符串,所以使用&#34;%s&#34;设置完字符串后。
答案 2 :(得分:0)
当您尝试声明类似这样的内容时
char n_avion[6][20]={'BOING747','AIRBUSA380','LEARJET45','DC10','ANTONOV32','CONCORDE'};
char c_avion[6][2]={'B0','AB','Lj','DC','AN','CO'};
我希望目的是定义字符串数组,在这种情况下,值必须是双引号。
char n_avion[6][20]={"BOING747","AIRBUSA380","LEARJET45","DC10","ANTONOV32","CONCORDE"};
char c_avion[6][2]={"B0","AB","Lj","DC","AN","CO"};
说过字符串是以'\0'
字符
但是在这里,根本没有'\ 0'字符的空格,因为char c_avion[6][2]
中定义的大小限制为2,所以为'\0'
char c_avion[6][3]={"B0","AB","Lj","DC","AN","CO"};
最后是printf
只需将"%s"
用于字符串,将"%c"
用于字符