【发布时间】:2017-03-25 16:13:23
【问题描述】:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
int main()
{
system("cls");
int i1,n;
scanf("%d\n",&n);
for(i1=0;i1<n;i1++)
{
char *s;
s=(char *)malloc(sizeof(char)*20);
gets(s);
int l=strlen(s);
int l1=l;
int i,j;
for(i=0;i<l;i++)
{
if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'||s[i]=='A'||s[i]=='E'||s[i]=='O'||s[i]=='I'||s[i]=='U')
{
for(j=l1-1;j>=0;j--)
{
if(s[j]=='a'||s[j]=='e'||s[j]=='i'||s[j]=='o'||s[j]=='u'||s[j]=='A'||s[j]=='E'||s[j]=='O'||s[j]=='I'||s[j]=='U')
{
printf("%c",s[j]);
l1=j;
break;
}
}
}
else
{
printf("%c",s[i]);
}
}
printf("\n");
free(s);
}
getch();
return 0;
}
这是一个反转字符串元音顺序的程序 (education -> odicatuen)。在下图中,左侧是输入文件,右侧是输出文件。可以看到开头有一个向上的箭头
程序中没有错误。它工作正常。我有一个输入文本文件,我通过命令提示符将我的输出保存在一个输出文本文件中。我的输出文件开头出现意外的“上箭头字符”
【问题讨论】:
-
“程序中没有错误” - 那你为什么在这里发帖?
-
不要使用
gets,永远不要使用它。这是一个危险的功能,如果您继续使用它,迟早会导致重大问题。此外,它在 C99 标准中已被弃用,并在最新的 C11 标准中完全删除。 -
另外,调试器是一个非常有用的工具,如果你真的想成为一名程序员,即使是业余爱好者,你也确实需要学习如何使用它。
-
我投票决定将此问题作为题外话结束,因为程序中没有错误并且运行良好。