在c

时间:2018-03-16 05:50:06

标签: c

我是c的新手,所以我想在二维数组中输入字符串,但不打印string.what&#39错误在这段代码中如何解决这个问题。谢谢先进

#include <stdio.h>
#include<string.h>
int main()
{
    char col[100][100];
    int i,j;
    for(i=0; i<2; i++)
    {
        for(j=0; j<2; j++)
        {
            scanf("%s",
                  &col[i][j]);

        }
    }
     for(i=0; i<2; i++)
    {
        for(j=0; j<2; j++)
        {
           printf("%s\t",col[i][j]);

        }
        printf("\n");
    }

    return 0;
}

3 个答案:

答案 0 :(得分:1)

您正在使用%s打印字符。改为%c

printf("%c\t", col[i][j]);

使用%s printf会打印所有字符,直到找到\0,在您的情况下,没有任何字符会导致意外行为。

答案 1 :(得分:1)

在2D字符数组中,每个元素col[i][j]都是一个字符。但是,您正在使用printfscanf语句来处理字符串和打印字符串。您需要更改以下内容:

scanf("%c",&col[i][j]);

printf("%c\t",col[i][j]);

答案 2 :(得分:0)

使用%c代替%s,因为%s是String的标识符。我在你的代码中发现的是你说你想要字符串作为输入,但是你将char作为输入使用char。我建议你使用指针将String作为2D char数组中的输入。

将String作为2D char数组中的输入

#include <stdio.h>
#include <string.h>
int main() {
    char *s[100];
    char s1[100];
    int i;
    for(i=0;i<5;i++){
        scanf("%s", s1);
        s[i]=strdup(s1);
    }
    for(i=0;i<5;i++){
        printf("%s\n", s[i]);
    }
    return 0;
}

我正在做的是我在s1中从用户那里获取输入并将其放在2D char数组中。通过使用此方法,您已将每个字符串放在每一行中。

希望有所帮助。