社区
C语言
帖子详情
简单C问题?只是我不知道,等待,答案合适就揭帖!!!
lyr311
2003-08-19 09:07:20
各位好!问两个简单问题,只是我学C不久,不知道而已:
1.(大家不要笑话哈)C中编程使用中文时,怎样实现翻页啊,怎么不能用PageDown翻页呢?
2.C中指针数组有多少元素怎样用通式表示,如:
char *num[]={"abcd","efgh","hi","j","klm"};
char **p;
for(p=num;p<num+4;printf("%s",*p),p++);
最后一句的"4"能用通式表示吗?盼答!!!
...全文
111
22
打赏
收藏
简单C问题?只是我不知道,等待,答案合适就揭帖!!!
各位好!问两个简单问题,只是我学C不久,不知道而已: 1.(大家不要笑话哈)C中编程使用中文时,怎样实现翻页啊,怎么不能用PageDown翻页呢? 2.C中指针数组有多少元素怎样用通式表示,如: char *num[]={"abcd","efgh","hi","j","klm"}; char **p; for(p=num;p<num+4;printf("%s",*p),p++); 最后一句的"4"能用通式表示吗?盼答!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lyr311
2003-08-20
打赏
举报
回复
对了, kof99(hongzhiyong) ,按照你的方法,我修改了配置文件congfig.sys ,还是有问题啊,如果在纯DOS下运行,则直接跳出,报如下错误:
exit error=3,winerror=0 ???????????这是什么意思啊?
补充一句,我的中文环境是用pdos95加载的。
lyr311
2003-08-20
打赏
举报
回复
楼上的老兄:上面的几条语句是什么意思啊,我的DOS学得很臭啊,麻烦给解释一下啊!
lyr311
2003-08-20
打赏
举报
回复
揭帖拉,感谢大家参与啊!
lyr311
2003-08-20
打赏
举报
回复
老兄,能不能解释一下config.sys的几句啊
DOS=HIGH,UMB
device = c:\windows\himem.sys
我的DOS学得很臭啊
kof99
2003-08-20
打赏
举报
回复
微软的PDOS95很烂,狂占内存,最好用CCDOS97,这个版本不错. 用UCDOS也成.
建议不要在纯DOS下,如果不是要写一些直接控制硬件的程序,还是在WIN98的MS-DOS模式下.
这样应该就不会有那么多毛病.
另: 在WINDOWS还是把 device=c:\windows\emm386 ram 这句去掉
kof99
2003-08-20
打赏
举报
回复
被你搞蒙了,NND,:"Out of memory"
这个是内存不足,跟编程序没关系
DOS的内存问题懒得和你多说
这样解决:
改 congfig.sys (一般在C:\,没有就自己建一个)
内容: DOS=HIGH,UMB
device = c:\windows\himem.sys (应该有这个文件吧)
device = c:\windows\emm386.exe RAM (你应该是在纯DOS下吧)
cdxiaogan
2003-08-20
打赏
举报
回复
指针变量存储地址值,在C语言中,地址是unsigned int型,任何变量的地址都是固定大小的(与系统及编译器有关,比如32b或16b的),一般是16位,两字节,所以无论是结构体还是一般变量测试的地址都是2(Bytes)大小。
sizeof(zw)是测试zw这个数组的所占空间(因为zw是数组名)
sizeof(zw[i])是每个元素的空间
sizeof(*zw[i])是zw[i]所指的那个变量的空间,因为是字符指针,所以是1(字符占一个字节空间)
lyr311
2003-08-19
打赏
举报
回复
嗯,好了,我全方位的做了一遍测试,楼上二位 的有道理,但是新问题又来了,且看:
我的测试结果如下:
#include <stdio.h>
#include <string.h>
main()
{
char *zw[]={"abc","def","g","jk"};
int i;
i=0;
while(*zw[i]!=NULL)
{printf("i=%d,Len=%d,size1=%d,size2=%d,size3=%d,size4=%d\n",
i,strlen(zw[i]), sizeof(zw[i]),sizeof(zw),
sizeof(*zw[i]),sizeof(*zw));
i++;}
}
运行结果如下:
i=0,Len=3,size1=2,size2=8,size3=1,size4=2
i=1,Len=3,size1=2,size2=8,size3=1,size4=2
i=2,Len=1,size1=2,size2=8,size3=1,size4=2
i=3,Len=2,size1=2,size2=8,size3=1,size4=2
用sizeof(zw)/sizeof(zw[i])=4,这个基本上理解了,但是关于用sieof测试指针数据类型的结果我一直比较疑惑,sizeof(zw[i])==2,sizeof(zw)=8,sizeof(*zw[i])==1,而当结构体中建立如下数据类型时:
struct stu{long a;float score;struct stu *next;}
此时测试的指针类型字节数占用2个字节,为什么啊?sizeof函数测试指针类型时结果是怎样得来的啊,望答复啊!!!
GhostAdz
2003-08-19
打赏
举报
回复
有个很严重的问题,最好不要比较地址啊“p<num+4;”这在比较地址
不安全也无意义,当然在这里不会影响结果,但是换个方法比较好
另外同意楼上的观点,每个数组成员都是一个存放char 的地址
放的都是字符窜的首地址
ianzy
2003-08-19
打赏
举报
回复
sizeof( num ) / sizeof( num[0] ) 是对的。即使字符个数不一样,它也能得到正确的结果。原因如下:
num 是一个指针数组,它的每一个成员是一个指针,只不过这个指针指向一个字符串。但不管字符串长度怎样,指针的长度总是一样的。所以,sizeof( num[0] ) = 4 (32位机)。而 sizeof( num[0] ) == sizeof( num[1] ) ... == sizeof( num[4] ) )。所以上面的公式即可用来求数组的长度。不知楼主明白了吗?
lyr311
2003-08-19
打赏
举报
回复
大家的意见很好,继续啊,我还是不懂C中指针数组有多少元素怎样用通式表示,如:
char *num[]={"abcd","efgh","hi","j","klm"};
char **p;
for(p=num;p<num+5;printf("%s",*p),p++);
最后一句的"5"能用通式表示吗?
关键是各个数组元素的字符个数不一样啊,除了 longenic(江寒) 的方法之外,还有能用通式解决的吗???用盼答!!!
lyr311
2003-08-19
打赏
举报
回复
谢谢 OSNC_17(刘海啸),好惭愧,好久没用过DOS下的中文了,竟然忘了,学习!!!
OSNC_17
2003-08-19
打赏
举报
回复
你所说的翻页是不是在UCDOS下的五笔输入?
这个好简单的,不就是按+号嘛。
lyr311
2003-08-19
打赏
举报
回复
goodboy1881(三井) :
你的程序也只是适用于那种一般的数组啊,要是是指向指针的数组,各字符窜字符个数不等的时候那个计算公式就不行吧??????????
lyr311
2003-08-19
打赏
举报
回复
对了,plainsong(短歌)老兄 啊,你的答案:
#define ARY_LEN(X) (sizeof(X) / sizeof(X[0]));
这时ARY_LEN(num)的值就是5(它有5个元素,不知道你的4来自何处)。
=========================================================================
这种情况是不是只适用于各数组元素字符相等的情况啊?????
lyr311
2003-08-19
打赏
举报
回复
我的意思是选字的时候不能翻页,咋回事啊?其他的一般用PageDown就翻页了,我用的TC2.0.
通式就是通用的公式啊,就是要满足一般情况,比如像 plainsong(短歌) 那样。
另外,我又遇到问题了,我的TC程序中指针数组怎么用中文的时候就报如下错误啊,错误提示:"Out of memory"
积木
2003-08-19
打赏
举报
回复
1.(大家不要笑话哈)C中编程使用中文时,怎样实现翻页啊,怎么不能用PageDown翻页呢?
编程和文字处理是两个概念,没有什么页不页的
积木
2003-08-19
打赏
举报
回复
.C中指针数组有多少元素怎样用通式表示,如:
char *num[]={"abcd","efgh","hi","j","klm"};
char **p;
for(p=num;p<num+4;printf("%s",*p),p++);
最后一句的"4"能用通式表示吗?盼答!!!
给你一个例子,我写的,你说的这个是典型的范型算法思想;
int main()
{
int a[10] = {20,30,50,80,30,20,78,42,38,69};
int* a_begin = a;
int* a_end = a + sizeof(a)/sizeof(int);
int* p;
for(p = a_begin;p!=a_end;p++)
{
printf("%d\t",*p);
}
return 0;
}
lybapple
2003-08-19
打赏
举报
回复
1。C中编程使用中文时,怎样实现翻页啊,怎么不能用PageDown翻页呢?
你的编译器是什么?没有说清楚。
2。什么是通式?
longenic
2003-08-19
打赏
举报
回复
也不能这么除吧。
char *num[]={"abcd","efgh","hi","j","klm"};
char **p;
for(p=num;p<num+4;printf("%s",*p),p++);
改为其他的方式就可以了。
int i=0;
while(num[i] != NULL)
{
printf("%s",num[i]);
i++;
}
加载更多回复(2)
北京大学附属小学2020-2021学年高一语文月考试题含解析.doc
6. 师生关系:蔡元培与学生之间的关系不仅仅是师生,更像朋友和导师,他关心学生的成长,即使在困难时期也会给予理解和支持,鼓励学生改正错误,而不是
简单
地责备或拒绝。 7. 传统文化的现代应用:蔡元培通过《论语...
中国新闻传播史整本书课件完整版电子教案全套课件最全教学教程ppt(最新).pptx
文字的应用扩展到告示、
揭帖
、檄文等形式,但新闻尚未成为独立的信息类型。 唐代的官方新闻体系中,进奏院状是重要的传播媒介,它记载了行政、军事等重要信息。宋代邸报的出现标志着新闻传播的制度化,邸报在宋代...
湖北省咸丰县2020学年高一语文10月月考试题.doc
塘报、告示、竹筹、
揭帖
、旗报和牌报等非官方信息传递方式的存在,进一步丰富了新闻传播的形式。 清代的官报发布体系与明代类似,但有所细分,分为京塘和省塘,主要报道政事。这一时期,新闻传播已经形成了较为固定...
湖北省咸丰县2017_2018学年高一语文10月月考试题
2. 邸报与官报的发展:两汉时期,邮驿制度发展,汉朝设有“邸”但不具备发布官报职能。唐代进奏院状标志着政府官报的出现,宋代邸报制度更成熟,同时民间小报的兴起打破了官报的垄断。明代恢复邸报发行,同时允许...
强制
揭帖
出bug了
这次信誉分被扣是由于被强制
揭帖
所致。CSDN已经在2周前发了公告要求用户自行
揭帖
。强制
揭帖
所扣信誉分不会被记录到信誉分变化记录中。这次强制
揭帖
是对2004年7月到2005年6月之间的未结非0分帖子进行了强制
揭帖
。每一...
C语言
70,022
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章