新手求助!!
疑问:输出结果不对,代码哪里错了呢?题目:写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include<stdio.h>
void inverse(char str[]);
char news;
void main()
{
char str;
printf("input string:");
scanf("%s",str);
inverse(str);
printf("%s",news);
}
void inverse(char str[])
{
int count=0,i;
for(i=0;i<20;i++)//计算str数组的长度
{
count=count+1;
if(str=='\0')
break;
}
count=count-1;//count比i多加了一次,所以减一才对把?
for(i=0;i<count;i++)//把倒序后的数据存在new数组里
{
news=str;
count=count-1;
}
news='\0';
} 把 news='\0'放到赋值前去 BngThea 发表于 2020-4-11 20:58
把 news='\0'放到赋值前去
赋值前是哪里?{:5_100:}
结束符不是要放在最后的吗? #include<stdio.h>
void inverse(char str[]);
char news ;
void main()
{
char str;
printf("input string:");
scanf("%s", str);
inverse(str);
printf("%s", news);
}
void inverse(char str[])
{
int count = 0, i;
for (i = 0; i < 20; i++)//计算str数组的长度
{
count = count + 1;
if (str == '\0')
break;
}
count = count - 1;
int num = count;
for (i = 0; i < num; i++)//把倒序后的数据存在new数组里
{
news = str;
count = count - 1;
}
news = '\0';
}
还是计数上的问题,需要梳理下 本帖最后由 入门者 于 2020-4-11 23:04 编辑
// 4goodworld 发表于 2020-4-11 22:32
还是计数上的问题,需要梳理下
明白了,谢谢你啦!! 本帖最后由 奇宝 于 2020-4-12 00:38 编辑
hsk123456 发表于 2020-4-11 21:58
赋值前是哪里?
结束符不是要放在最后的吗?
//疑问:输出结果不对,代码哪里错了呢?
//题目:写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include<stdio.h>
#include<iostream>
void inverse(char str[]);
char news;
int main()
{
char str;
printf("input string:");
scanf("%s", str);
inverse(str);
printf("%s", news);
}
void inverse(char str[])
{
int count = 0, i;
for (i = 0; i < 20; i++)//计算str数组的长度
{
if (str == '\0')
break;
count = count + 1;//count放到后面增加就不会比i多一了,为了简便,可以写成--> ++count;
}
/*count = count - 1;*///count比i多加了一次,所以减一才对把?(如上,即可不必减一)
for (i = 0; i < count; i++)//把倒序后的数据存在new数组里
{
news[ i ] = str;//如果在这里更改count,会造成for循环的count减少
//,所以应该这样,减一是为了避免引进 "\0"
}
news = '\0';
} 奇宝 发表于 2020-4-11 23:41
//疑问:输出结果不对,代码哪里错了呢?
//题目:写一个函数,使输入的一个字符串按反序存放,在主函 ...
谢谢你让我又熟悉了一下++i和i++,哈哈哈
还有就是我认为
news = str;
也可以写成
news = str;
count = count - 1;
并不会造成count的减少。
页:
[1]