我是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;
}
答案 0 :(得分:1)
您正在使用%s
打印字符。改为%c
。
printf("%c\t", col[i][j]);
使用%s
printf
会打印所有字符,直到找到\0
,在您的情况下,没有任何字符会导致意外行为。
答案 1 :(得分:1)
在2D字符数组中,每个元素col[i][j]
都是一个字符。但是,您正在使用printf
和scanf
语句来处理字符串和打印字符串。您需要更改以下内容:
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数组中。通过使用此方法,您已将每个字符串放在每一行中。
希望有所帮助。