c中2D字符数组的输入

  • 本文关键字:数组 字符 2D arrays c
  • 更新时间 :
  • 英文 :


我是C编程新手....我们有二维的整数数组…但是如何声明和接受2D字符串数组的输入…我尝试过在类似于整数数组的时间内采取单个字符输入…但我想把整个字符串作为输入一次到2D数组..

代码:

#include <stdio.h>
int main()
{
char str[20][20];
int i, j;
for (i = 0; i < 20; i++)
{
for (j = 0; j < 20; j++)
{
scanf("%c", &str[i][j]);
}
}
}

谁能解决这个问题?

二维字符串数组的声明可以描述为:字符字符串[m] [n];其中m是行大小,n是列大小。如果你想用m个字符串作为输入,每次输入一个完整的字符串…内容如下

#include<stdio.h>
int main()
{
char str[20][20];
int i,j;
for(i=0;i<m;i++)
{
gets(str[i]);
}
}

这里的'i'是字符串....的索引希望这个答案能帮到你…

您的代码有几个问题。使用scanf到达字符,您将读取换行符。如果我创建一个更精简的代码版本,用额外的几行来打印输入,我们可以看到:

#include <stdio.h>
int main() {
char str[3][3];
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf("%c", &str[i][j]);
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%c ", str[i][j]);
}
printf("n");
}
}

并运行它:

$ ./a.out
gud
ghu
ert
g u d
g h
u
e
$

我们可以测试输入来规避这个问题。如果字符输入是换行字符('n'),那么我们将减少j,因此我们有效地将循环发送回一步。我们可以很容易地扩展这个布尔条件来忽略其他空白字符,如' ''t'

#include <stdio.h>
int main() {
char str[3][3];
int i, j;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
char temp = 0;
scanf("%c", &temp);
if (temp == 'n' || temp == ' ' || temp == 't') {
j--;
}
else {
str[i][j] = temp;
}
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%c ", str[i][j]);
}
printf("n");
}
}

现在,当我们运行这个:

$ ./a.out
gud
ghu
ert
g u d
g h u
e r t
$

当然,您应该做的另一件事是检查scanf的返回值,这是一个表示已读条目数的int。在这种情况下,如果它返回0,我们就知道它没有读取任何内容。在这种情况下,在内循环中,我们可能还需要减少j,以便循环继续。

#include<stdio.h> 
main()
{
char name[5][25];
int i;
//Input String
for(i=0;i<5;i++)
{
printf("Enter a string %d: ",i+1);
}
//Displaying strings
printf("String in Array:n");
for(int i=0;i<5;i++)
puts(name[i]);
}

接受数组中的String的简单代码。

相关内容

  • 没有找到相关文章

最新更新