C语言二维数组从键盘赋值问题

比如有这样一个数组sr[100][100]

如何做到在输入sr[0]后敲回车 再输入sr[1]。。等等
若用户没有输入数据,直接回车,则结束输入
那个。。是字符数组。。可以用gets();
最新回答
一澜冬雪

2024-06-04 00:02:09

可以用getchar函数,先付给一个中间变量temp,用temp与'\n'比较,若相等则说明要么输入下一行的数据,要么输入结束(可再设一个标记变量flag,若有数据输入时,赋值为1,以此来判断是否结束输入);反之不等则继续输入,思路大致这样,楼主把握吧。
追问
有点不明白。。。能详细点么?
sr[100][100];
while(temp=getchar()!='\n')
{
int w=0;
sr[w][0]=temp;

gets(sr[w]);
w+=1;

}

是这个意思么?感觉不对额
追答
首先,我的意思是用getchar便不再用gets,仅仅用getchar来进行录入,再则,while的判断条件不对(如果用我所说的思路),再加||w!=0(或),在while循环里面,w不能每次都赋值为0
这样,楼主,我写一下,你看看,
char sr[100][100];
int flag=0;
int next=0;
int line=0;
char temp;
while(((temp=getchar())!='\n')||flag!=0)
{

if(temp=='\n')
{ //printf("11 %d",temp);
line++;//行++,下一行录入
flag=0;
next=0;//第一列
fflush(stdin);
}
else
{
flag=1;
sr[line][next]=temp;
next++;
}
}
按照你说的要求,我运行着可以。有什么问题楼主再说。
盯着作业唱征服丶

2024-06-04 04:09:01

#include"stdio.h"
void main()
{
int sum[10][10];
int i,j;
printf("请输入数据\n");
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
scanf("%d",&sum[i][j]);
if(sum!='\r')
break;
}
printf("你输入的数是\n");
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
printf("\t%d",sum[i][j]);
}
}
追问
if(sum!='\r')

这是怎么回事?一个双重指针怎么可以和一个字符比较?
追答
这个不是指针!这段代码的意思是(如果sum!=\r)就退出循环。也就是输入。
追问
error C2040: '!=' : 'int [10][10]' differs in levels of indirection from 'int'
error C2446: '!=' : no conversion from 'int' to 'int (*)[10]'
真的是指针~
追答
你用的什么编译器?我用的cv6.0。
定义指针变量前面需要加上*如:int *a;表示a是一个指针变量如果前面两个*表示指向指针变量。
追问
同VC6.0  。
数组跟指针是一样的。 二维数组也就是双重指针~
追答
如果你知道的这么透彻。那么你就不会问这么简单的问题了?你觉得我说的对吗?
泛滥的青春。放纵年纪丶

2024-06-04 00:27:36

可以使用一个循环,从键盘一次读取数据,以回车键作为间隔。输完最后一个数时和回车键,会自动结束输入的。示例如下:
#include <stdio.h>
void main()
{
int a[100][100];
int i,j;
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
{
printf("%d ",a[i][j]);
}
}
追问
你好像没有理解我的意思。。虽然数组是[100][100]
但并不一定是输入100*100个数。。