| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 389 人关注过本帖
标题:困扰了很久的问题,求指教……
只看楼主 加入收藏
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
困扰了很久的问题,求指教……
有个问题,一直在困扰我,不说废话,切入正题:
其实这个代码不用细看,我只是在练习指针数组的使用,但是发现一个问题,
那就是我必须把所有要用到的变量先全部定义出来才能编译通过,否则就报错,如下:
正确代码:
#include<stdio.h>
#include<string.h>
int main()
{
    char str1[20],str2[20],str3[20],str4[20],str5[20];
    char *p[5];
    int i,j;
    char *temp;
    printf("请输入第一个字符串(限20个字符)\n");
    gets(str1);
    printf("请输入第二个字符串(限20个字符)\n");
    gets(str2);
    printf("请输入第三个字符串(限20个字符)\n");
    gets(str3);
    printf("请输入第四个字符串(限20个字符)\n");
    gets(str4);
    printf("请输入第五个字符串(限20个字符)\n");
    gets(str5);
    p[0]=str1;
    p[1]=str2;
    p[2]=str3;
    p[3]=str4;
    p[4]=str5;
    for(i=4;i>=0;i--)
    {
        for(j=0;j<i;j++)
        {
            if(strcmp(p[j],p[j+1])<0)
            {
                temp=p[j];
                p[j]=p[j+1];
                p[j+1]=temp;
            }
        }
    }
    printf("将输入的字符串从大到小排列为:\n");
    for(i=0;i<5;i++)
    {
        printf("%s\n",p[i]);
    }
    return(0);
}
这个能够正确运行,但是下面的就不能,请注意红色的部分,我不过是把变量定义的位置放在了后面,
书上不是说变量定义的位置之后也属于这个变量的作用范围,但是为什么就报错呢?:
#include<stdio.h>
#include<string.h>
int main()
{
    char str1[20],str2[20],str3[20],str4[20],str5[20];
    printf("请输入第一个字符串(限20个字符)\n");
    gets(str1);
    printf("请输入第二个字符串(限20个字符)\n");
    gets(str2);
    printf("请输入第三个字符串(限20个字符)\n");
    gets(str3);
    printf("请输入第四个字符串(限20个字符)\n");
    gets(str4);
    printf("请输入第五个字符串(限20个字符)\n");
    gets(str5);
    char *p[5];
    p[0]=str1;
    p[1]=str2;
    p[2]=str3;
    p[3]=str4;
    p[4]=str5;
    int i,j;
    char *temp;
    for(i=4;i>=0;i--)
    {
        for(j=0;j<i;j++)
        {
            if(strcmp(p[j],p[j+1])<0)
            {
                temp=p[j];
                p[j]=p[j+1];
                p[j+1]=temp;
            }
        }
    }
    printf("将输入的字符串从大到小排列为:\n");
    for(i=0;i<5;i++)
    {
        printf("%s\n",p[i]);
    }
    return(0);
}
求指教,不胜感激……
搜索更多相关主题的帖子: 字符串 include 
2012-05-05 22:07
渚清沙白
Rank: 3Rank: 3
来 自:湖南财政经济学院
等 级:论坛游侠
帖 子:25
专家分:114
注 册:2012-5-5
收藏
得分:5 
C99中规定变量可以放在任何地方,但是需要编译器的支持额……
我认为可能是编译器的问题!我用的vc6.0也报错了

这个应该是c89标准的内容,老编译器如果是用纯C模式编译的话就会遇到这个问题.

2012-05-05 23:15
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:0 
回复 2楼 渚清沙白
多谢指教,……
2012-05-06 01:06
yfz
Rank: 1
等 级:新手上路
帖 子:7
专家分:7
注 册:2011-8-9
收藏
得分:5 
你用的是turbo c编译器把,是编译器的问题
2012-05-06 08:37
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:0 
回复 4楼 yfz
其实我用的是VC6,不过以前用TC2.0的时候也一样报错……
2012-05-06 10:55
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:10 
你把文件从.c改成.cpp就可以用vc6编译了。
不改的话,只有把变量申明放前面。

我们都在路上。。。。。
2012-05-06 11:00
S_Ringo
Rank: 4
来 自:歌舞伎町
等 级:业余侠客
帖 子:94
专家分:230
注 册:2012-4-15
收藏
得分:0 
回复 6楼 hellovfp
确实可以,多谢……
2012-05-06 14:01
快速回复:困扰了很久的问题,求指教……
数据加载中...
 
   



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

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