调试无错,但运行有问题

Kleist 2009-08-27 04:10:01
写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串

调试全部通过,但是运行中,随便输入几个字符,回车后,一样都没有,再按回车,窗口退出


#include<stdio.h>
#include<string.h>
#include<conio.h>
char str2[30];
void main()
{
void convert(char str1[]);
char str1[30];
printf("Please input a string : ");
scanf("%s",str1);
convert(str1);
printf("%s",str2);
getch();
}

void convert(char str1[])
{
int i,j;
for(i=0,j=strlen(str1); i!='\0',j>=0; i++,j--)
str2[j]=str1[i];
}
...全文
250 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kleist 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 summersunboy 的回复:]
假设 str1里面的内容为'1' '2' '3',其长度strlen(str1)是3,但是存储的时候却是:
str1[0]='1';
str1[1]='2';
str1[2]='3';
最大下标为2


[/Quote]

谢谢!!学习了!
Kleist 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 pingheguo 的回复:]
引用 6 楼 dly553709938 的回复:
LS的兄弟,你引用我的这个下来干嘛啊

你不是错了 改下长度就行了嘛。。字符串以\0结尾的。
而且你用scanf()也不行 遇到空格不会输出的 要改成
C/C++ codegets(str1);
[/Quote]

感谢提醒!!
summersunboy 2009-08-27
  • 打赏
  • 举报
回复
假设 str1里面的内容为'1' '2' '3',其长度strlen(str1)是3,但是存储的时候却是:
str1[0]='1';
str1[1]='2';
str1[2]='3';
最大下标为2

asimay 2009-08-27
  • 打赏
  • 举报
回复
str2[j-1]=str1[i];
pingheguo 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dly553709938 的回复:]
LS的兄弟,你引用我的这个下来干嘛啊
[/Quote]
你不是错了 改下长度就行了嘛。。字符串以\0结尾的。
而且你用scanf()也不行 遇到空格不会输出的 要改成
gets(str1);
Kleist 2009-08-27
  • 打赏
  • 举报
回复
顺便问一下,strlen测试出的字符串长度是不是多了一个 回车
Kleist 2009-08-27
  • 打赏
  • 举报
回复
找到原因了,最后的

str2[j]=str1[i];

改为

str2[j-1]=str[i];

就行了 - -!
summersunboy 2009-08-27
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<string.h>
#include<conio.h>

char str2[30];

void convert(char str1[]);

void main()
{
char str1[30];
printf("Please input a string : ");
scanf("%s",str1);
convert(str1);
printf("%s",str2);
getch();
}

void convert(char str1[])
{
int i,j;
for(i=0,j=strlen(str1)-1; str1[i]!='\0',j>=0; i++,j--)
str2[j]=str1[i];
}
kakashi0309 2009-08-27
  • 打赏
  • 举报
回复

void convert(char str1[])
{
int i,j;
for(i=0,j=strlen(str1); str1[i]!='\0',j>0; i++,j--) //修改下循环
str2[j-1]=str1[i];
}

Kleist 2009-08-27
  • 打赏
  • 举报
回复
LS的兄弟,你引用我的这个下来干嘛啊
pingheguo 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 dly553709938 的回复:]
写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串

调试全部通过,但是运行中,随便输入几个字符,回车后,一样都没有,再按回车,窗口退出

C/C++ code
#include<stdio.h>
#include<string.h>
#include<conio.h>char str2[30];void main()
{void convert(char str1[]);char str1[30];
printf("Please input a string :");
scanf("%s",str1);
convert(str1);
printf("%s",str2);
getch();
}void convert(char str1[])
{int i,j;for(i=0,j=strlen(str1); i!='\0',j>=0; i++,j--) //j=strlen(str1)-1;str1[i]!='\0'
str2[j]=str1[i];
}
[/Quote]
Kleist 2009-08-27
  • 打赏
  • 举报
回复
for(i=0,j=strlen(str1); str1[i]!='\0',j>=0; i++,j--)

这行我的确粗心了,没发现

但是按你的这个代码执行后(去掉了 [color=#FF0000])

还是能调试通过,但执行起来和我之前一样的现象
asimay 2009-08-27
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<string.h>
#include<conio.h>
char str2[30];
void convert(char str1[]); // here
void main()
{
//void convert(char str1[]);
char str1[30];
printf("Please input a string : ");
scanf("%s",str1);
convert(str1);
printf("%s",str2);
getch();
}

void convert(char str1[])
{
int i,j;
for(i=0,j=strlen(str1); str1[i]!='\0',j>=0; i++,j--) // here
str2[j]=str1[i];
}

Kleist 2009-08-27
  • 打赏
  • 举报
回复
能解释下吗?我才学C没多久

是不是加一些东西,让他只执行str1,或者str2,看看情况?
痴心笨笨 2009-08-27
  • 打赏
  • 举报
回复
设个断点,单步跟踪一下看看str1和str2里边的内容就知道了,哈哈

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧