【发布时间】:2013-06-17 12:29:10
【问题描述】:
我想反转字符串中单词的字母,并且必须将其存储在同一个数组中。示例:i/p: hi how are you o/p: ih woh era uoy。我写了这个程序,但它只是打印相同的字符串而不反转,并且程序没有终止它继续打印一些东西。我找不到错误。请帮助我并告诉我正确的代码。
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
void stre(char (&a1)[20], int j1, int i1)
{
char b[20];
for(int k=i1-j1;k<i1;k++)
b[k]=a1[i1-k-1];
for(k=i1-j1;k<i1;k++);
a1[k]=b[k];
}
void main()
{
clrscr();
int j;
char a[20];
gets(a);
for(int i=0;a[i]!='\0';i++)
{
j++;
if(a[i]==' ')
{
stre(a,j,i);
j=0;
}
}
stre(a,j,i);
for(j=0;j<i;j++)
cout<<a[j];
getch();
}
朋友们,在您回答之后,我删除了 for 循环中的分号并初始化了 j=0,但我现在仍然无法为 i/p:hi 获得所需的输出,你好吗 o/p:ihh hi hhi嘿嘿。仍然需要你的帮助。
【问题讨论】:
-
您正在制作 C 和 C++ 的糟糕组合...尝试在您的情况下坚持使用 C++ 流和格式化输入。
-
不确定是否重复,但这里有一个类似的问题:stackoverflow.com/questions/12879348/…
-
A
gets在 20 个char的数组上?任何gets的使用都是一个错误,但只有 20 个char,它几乎肯定会很快显现出来。 -
它的价值:一个更简单(更好)的解决方案是将字符串分解为单词,并在每个单词上调用
std::reverse。 -
更不用说在 must 系统上没有像
<conio.h>这样的标头,并且它存在的地方已被弃用,j永远不会初始化,main不允许返回void.
标签: c++ arrays pass-by-reference