#include<iostream>
//#include<stdio.h>
using namespace std;
int main()
{
char mystr[20],rev[20];
int i,c=0;
cout<<"Enter a String: ";
gets(mystr);
for (i=0;mystr[i]!='\0';i++);
for (int j=i;j>=0;j--)
{
rev[c]=mystr[j];
c++;
}
cout<<"Reverse is: ";
puts(rev);
return 0;
}
为什么puts()不打印任何内容?
如果我使用for循环打印字符串rev输出是正确的,但是为什么puts没有给出正确的输出呢?
最佳答案
因为rev
的第一个符号在反向操作后是\0
,并且puts
认为字符串为以空值结尾的字符串。因此,它看到第一个字节为空并立即停止。
您可以通过以下方式修改循环:
for (i = 0; mystr[i] != '\0'; i++);
rev[i] = '\0';
for (int j = i-1; j>=0; j--)
{
rev[c] = mystr[j];
c++;
}
关于c++ - 为什么puts()不打印任何内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28453365/