简单打印字符串数组

时间:2015-10-03 04:32:32

标签: arrays string

请告诉我这个简单代码的错误。

#include<stdio.h>
#include<conio.h>
void main()
{
    int i,n;
    char a[100];
    clrscr();
    printf("\n Enter the size of the array");
    scanf("%d",&n);
    printf("\n Enter the array");
    for(i=0;i<n;i++)
    scanf("%s",a[i]);
    printf("\n Your array is \n");
    for(i=0;i<n;i++)
    printf("%s",a[i]);
    getch();
}

我的意见是 输入数组的大小 2 输入数组 苹果 香蕉 你的阵列 (null)(null)

有人可以解释为什么会这样吗?我哪里错了? 即使我的输入是单个字符,如a或s,这也是相同的输出。

提前致谢

3 个答案:

答案 0 :(得分:0)

您没有声明字符串数组本身。

char a[100];表示您声明一个可以容纳100个字符的数组(其中一个字符应为NULL以便正确终止字符串)。换句话说,你只声明一个字符串。

虽然您需要一个字符串数组,因此您需要执行char a[10][100];之类的操作。这将声明一个包含10个字符串的数组,其中每个字符串可以容纳100个字符。

使用char a[10][100];更新代码后,我正在关注o / p(您正在寻找):

 Enter the size of the array3

 Enter the arrayhi
hello
com

 Your array is 
hi
hello
com

答案 1 :(得分:0)

这里有一些问题。

调用scanf时,需要使用&amp;运算符并传递字符串的地址,例如

scanf("%s", &a[i]);

接下来是a是char数组,而不是字符串数组。你可以试试

char a[20][100];

给你100串20个字符。

答案 2 :(得分:0)

我编辑你的代码检查:

#include<stdio.h>
void main()
{
    int i,n;
    char a[100];
    printf("\n Enter the size of the array: \n");
    scanf("%d",&n);

    for(i=0;i<n;i++){

        printf("\n Enter the array value:  \n");
        int input;
        scanf("%d",&input);
        a[i] = input;
    }

    printf("\n Your array is : ");
    for(i=0; i<n; i++)

        printf("%d , ",a[i]);

    printf("\n");

}

你的错误在于读取值并将其分配给数组