为何没能输出?

liangkaiyu 2008-11-23 03:59:29
对一个字符串求逆,却没能输出结果


#include <stdio.h>
#include <string>
#define N 100

void main()
{
int i,j = 0;
char string[N],p[N];

printf("Input strings\n");

scanf("%s",string); //输入字符串

for(i = strlen(string)-1;i >= 0;i--) //把字符串倒置
{
p[j++] = string[i];
p[j] = '\0';
}

printf("the result string is:\n");

for (j = 0;p[j] = '\0';j++) //输出倒置后的字符串
{
printf("%s",p);
}
printf("\n");
}

...全文
112 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangkaiyu 2008-11-23
  • 打赏
  • 举报
回复
谢谢~~
0x1000 2008-11-23
  • 打赏
  • 举报
回复
自己写了一个个人认为更简单的,不知道是否符合楼主要求。

#include<stdio.h>
#define N 100
void main(){
char str[N];
int i;
gets(str);
for(i=strlen(str);i>=0;i--){
printf("%c",str[i]);
}
printf("\n");
}
0x1000 2008-11-23
  • 打赏
  • 举报
回复
自己写了一个个人认为更简单的,不知道是否符合楼主要求。
[code=C/C++]
#include<stdio.h>
#define N 100
void main(){
char str[N];
int i;
gets(str);
for(i=strlen(str);i>=0;i--){
printf("%c",str[i]);
}
printf("\n");
}
[code]
JavaerRobertLi 2008-11-23
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#define N 100

void main()
{
int i,j = 0;
char string[N],p[N];

printf("Input strings\n");

scanf("%s",string);

for(i = strlen(string)-1;i >= 0;i--)
{
p[j++] = string[i];
p[j] = '\0';
}

printf("the result string is:\n");

for (j = 0;p[j] != '\0';j++)
{
printf("%c",p[j]);
}
printf("\n");
getch();
}
Tcs_win 2008-11-23
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <string>
#define N 100

void main()
{
int i,j = 0;
char string[N],p[N];
char *str=p;
printf("Input strings\n");
gets(string);
for(i = strlen(string)-1;i >= 0;i--)
{
p[j++] = string[i];
}
p[j] = '\0';
printf("the result string is:\n");
printf("%s",str);
printf("\n");
}

//输入字符串用gets比sanf要好
//如果你输入的字符串中有空格,如abc def,sanf只能接收到abc,建议用gets比较好一些
qq675927952 2008-11-23
  • 打赏
  • 举报
回复
up 4L
houruifeng 2008-11-23
  • 打赏
  • 举报
回复

我想这样写程序会更简洁一些:
#include <stdio.h>
#define N 100

void main()
{
int i,j = 0;
char string[N],p[N];

printf("Input strings\n");

scanf("%s",string); //输入字符串

for(i = strlen(string)-1;i >= 0;i--) //把字符串倒置
p[j++] = string[i];
p[j] = '\0';
printf("the result string is:\n");

for (j = 0;p[j]!= '\0';j++) //输出倒置后的字符串
printf("%s",p);

printf("\n");
}

写程序要简洁一点才好啊!希望楼主以后能够注意一点,对于循环语句只有一个的就不要用
这个符号{}了,要不然会看花眼的,还有就是调用库函数一种类型只要一次就够了。
nullah 2008-11-23
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <string>
#define N 100

void main()
{
int i,j = 0;
char string[N],p[N];

printf("Input strings\n");

scanf("%s",string); //输入字符串

for(i = strlen(string)-1;i >= 0;i--) //把字符串倒置
{
p[j++] = string[i];
//p[j] = '\0';
}
p[j] = '\0';//字符串结束后才添加'\0'

printf("the result string is:\n");

for (j = 0;p[j] != '\0';j++) //输出倒置后的字符串
{
printf("%c",p[j]); //打印单个字符而不是整个字符串
}
printf("\n");
}
tbocd 2008-11-23
  • 打赏
  • 举报
回复
printf("%s",p);
本来就是输出字符串,好像没必要作个循环吧
就呆在云上 2008-11-23
  • 打赏
  • 举报
回复
修改如下:
你看看吧:
#include <stdio.h> 
#include <string>
#define N 100

void main()
{
int i,j = 0;
char string[N],p[N];
printf("Input strings\n");
gets(string);//输入字符串
for(i = strlen(string)-1;i >= 0;i--) //把字符串倒置
{
p[j++] = string[i];

}
p[j] = '\0'; //最后来设置他为0
printf("the result string is:\n");
//for (j = 0;p[j] = '\0';j++) //输出倒置后的字符串
//{
printf("%s",p);
//}
printf("\n");
}
fox000002 2008-11-23
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
#define N 100

void main()
{
int i,j = 0;
char string[N],p[N];

printf("Input strings\n");

scanf("%s", string); //输入字符串

for (i = strlen(string)-1;i >= 0;i--) //把字符串倒置
{
p[j++] = string[i];
p[j] = '\0';
}

printf("the result string is:\n");

//for (j = 0; p[j] != '\0';j++) //输出倒置后的字符串
//{
printf("%s\n", p);
//}
//printf("\n");
}
tlw112 2008-11-23
  • 打赏
  • 举报
回复
#include <string> ?

#include <string.h>

LZ 还是把源码复制过来吧
fox000002 2008-11-23
  • 打赏
  • 举报
回复
for (j = 0;p[j] = '\0';j++)

lz 搞错这个了吧

69,371

社区成员

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

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