在c中打印char数组的元素

时间:2017-11-07 14:41:49

标签: c arrays string

这是我的代码

#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任何帮助和谢谢

3 个答案:

答案 0 :(得分:3)

有很多问题:

  • 字符串必须包含在"之间,而不是'
  • 之间
  • c_avion[6][2]应为c_avion[6][3]你需要为字符串终结符多一个字符串(字符串以NUL字符终止)
  • printf("%c", n_avion[i])使用了错误的字符串格式说明符,它应该是%s而不是%c
  • 在printf格式字符串的末尾放置一个\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

其他提示

请勿使用63之类的“幻数”,但请使用常量。

例如:

#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"用于字符