| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2127 人关注过本帖
标题:为什么我的程序不能运行
只看楼主 加入收藏
yunnandaxue
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-11-19
收藏
得分:0 
谢谢
2008-12-12 09:55
yunnandaxue
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-11-19
收藏
得分:0 
#include <stdio.h>
#define S 100
int main()
{
char a[S],b[S];
int i,j;
scanf("%s",a);
for(i=4,j=0;i>=0;i--,j++)
b[j]=a[i];

printf("%s",b);
return 0;
}
我的程序为什么把字符转换完后会有很多“烫”字啊
2008-12-12 10:30
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
请问您输入几个字符?另外你的 b 字符串没有结束标记,在循环之后应该加上 b[i]='\0'; 这样的语句。  另外,你定义了100个字符的数组,却只转换了4个,不浪费么?其实你应该把 i 值赋为 i=strlen(a)-1;  这样输入99个以内的字符都会转换过来了。

    楼主再试一下?
2008-12-12 10:53
yunnandaxue
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-11-19
收藏
得分:0 
#include <stdio.h>
#include<string.h>
#define s 14

int main()
{
char a[s],b[s];
int i,j,n;
printf("请输入字母: \n");
scanf("%s",a);
n=strlen(a);
if(n<=14)
{for(j=n,i=0;j>=0,i<=n;j--,i++)
b[i]=a[j];
b[i]='\0';
printf("%s",b);}
else
printf("输入的字母超出最大限度,请重输");
return 0;
}
为什么运行不去结果呢?请高手指教
2008-12-12 16:25
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
#include <stdio.h>
#include<string.h>
#define s 14

int main()
{
char a[s],b[s];
int i,j,n;
printf("请输入字母: \n");
scanf("%s",a);
n=strlen(a);
if(n<=14)
{for(j=n,i=0;j>=0,i<=n;j--,i++) /* 这里改为 j=n-1 */b[i]=a[j];
b[i]='\0'; /* 这里改为 i-1 */printf("%s",b);}
else
printf("输入的字母超出最大限度,请重输");
return 0;
}
2008-12-12 16:29
yunnandaxue
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-11-19
收藏
得分:0 
那两处为什么要用i-1呢,是什么意思啊
2008-12-12 16:44
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
--------
    j=n,也就是说现在 a[j] 的位置正好在'\0'上,如果存入 b 数组,头一个字符就是结束标记,当然会无输出啦。所以得从 j=n-1开始转换。

   当循环完成的时候,i 的位置在应该结束的位置后面,也就是说,空出了一个字符,那样会输出垃圾数据。所以,要把 '\0' 安插在 i-1 的位置。

    这么说,您听明白了吗?
2008-12-12 16:48
yunnandaxue
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-11-19
收藏
得分:0 
那”strlen(a)”这个函数的意思是“返回a的长度,在长度计数中不包括'\0'么?那就是说存入b数组的第一个字符就不是'\0'了啊?是怎么回事啊
2008-12-12 22:13
yunnandaxue
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-11-19
收藏
得分:0 
对了,以后版主别称呼我“您”了,我应该尊敬您的
2008-12-12 22:14
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
char a[]="abcde";
int n;
printf("%d\n",strlen(a));

请这样试一下,看看  n 值到底是几?包不包括 '\0' ?
2008-12-12 22:25
快速回复:为什么我的程序不能运行
数据加载中...
 
   



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

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