| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 537 人关注过本帖
标题:请教一个关于字符数组的问题.
只看楼主 加入收藏
wentaiyou
Rank: 2
等 级:论坛游民
帖 子:68
专家分:17
注 册:2004-12-3
结帖率:100%
收藏
 问题点数:0 回复次数:9 
请教一个关于字符数组的问题.

#include "stdio.h"
#include "string.h"
#define S 5
#define L 2
void main()
{
char a[S][L];
int i;
printf("please input:\n");
for(i=0;i<S;i++)
gets(a[i]);

printf("\noutput:\n");
for(i=0;i<S;i++)
printf("%s\n",a[i]);

}
这是我的原程序.
运行后的结果为:
please input:
a1
b1
c1
d1
f1

output:
a1b1c1d1f1
b1c1d1f1
c1d1f1
d1f1
f1


小弟有点不明白为什么不是显示:
output:
a
b
c
d
f
我定义的是a[5][2]当我输入c1时gets()不能自动把后面多的1去掉吗?我把他换成 scanf("%s",a[i])结果还是一样.
不知道有没有什么输入函数能把我输入的字符自动变成定义的大小呐?
如:我订义的是a[5]当我输入abcde时在a[5]里保存的应该是'a','b','c','d','\0'可是结果确是一样把abcde输出来了.但这样应该是越界了吧.

搜索更多相关主题的帖子: 字符 
2007-08-28 13:50
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
gets(a[i]);

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


by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
2007-08-28 14:04
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
你字符串基础没有打好,再看看书吧



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
2007-08-28 14:06
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
以下是引用雨中飞燕在2007-8-28 14:04:29的发言:
gets(a[i]);

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


by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]

这样处理后,结果没什么区别的


You have lots more to work on! Never give up!c language!
2007-08-28 14:10
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
%.1s呢?



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
2007-08-28 14:15
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

#include "stdio.h"
#include "string.h"
#define S 5
#define L 3
void main()
{
char a[S][L];
int i;
printf("please input:\n");
for(i=0;i<S;i++)
gets(a[i]);

printf("\noutput:\n");
for(i=0;i<S;i++)
printf("%c\n",a[i][0]);

}


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-08-28 14:16
wentaiyou
Rank: 2
等 级:论坛游民
帖 子:68
专家分:17
注 册:2004-12-3
收藏
得分:0 
谢谢.您的回复.小弟也是刚开始.哈哈.以后还请多多指点.

您这个方法好像还有点小问题.如果我是用scanf(%1s,a[i])那我输入时就有一个问题了.  %.1S也不行
please input :abcdefg
output:
a
b
c
d
e

这是改过后的结果.我输入的是abcdefg他分别把一个字符分到每个数组里了.
但我的输入要求是任意输入如:我第一次输入abc只得到a在a[0]中整个a[0][0]='a',a[0][1]='\0'这样才是,输入第二个时如"123"在a[1]中存的是'1','\0'这样..

[此贴子已经被作者于2007-8-28 14:25:28编辑过]


假如回到过去.我能做些什么? 还是和现在这样有时间没事情?
2007-08-28 14:21
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 
以下是引用Knocker在2007-8-28 14:16:46的发言:

#include "stdio.h"
#include "string.h"
#define S 5
#define L 3
void main()
{
char a[S][L];
int i;
printf("please input:\n");
for(i=0;i<S;i++)
gets(a[i]);

printf("\noutput:\n");
for(i=0;i<S;i++)
printf("%c\n",a[i][0]);

}


如果是你这样,L可以取任何自然数的,0,1,2,3都可以


You have lots more to work on! Never give up!c language!
2007-08-28 14:25
wentaiyou
Rank: 2
等 级:论坛游民
帖 子:68
专家分:17
注 册:2004-12-3
收藏
得分:0 
以下是引用栖柏在2007-8-28 14:25:02的发言:

如果是你这样,L可以取任何自然数的,0,1,2,3都可以

您只是在输出时只让它输出第一个字符了.但其实上数组里存的并不是我要得到的.对不对.?


我的原意是用a[S][L]是用S来限制条数,用L来限制字符串的长度.如有100个学生的名字要输入进来.但名字的长度各不一样.有些人的名字是两个字也有8个字的.在这里用L定义一个最长的.S就是100了.这样正好对应着的.

[此贴子已经被作者于2007-8-28 14:32:17编辑过]


假如回到过去.我能做些什么? 还是和现在这样有时间没事情?
2007-08-28 14:27
chen7806
Rank: 1
等 级:新手上路
威 望:2
帖 子:160
专家分:0
注 册:2007-8-5
收藏
得分:0 
我略看了下,是你一维数组与二维数组的问题。a[5][2];你输入的时候变成a[5];没有指针,也没有双循环,数据肯定不对。
2007-08-28 16:05
快速回复:请教一个关于字符数组的问题.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017249 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved