Pig 拉丁语 单词转换
#include<stdio.h>
#include<string.h>
int main()
{
char s[100],pg[100];
int len,i,j,k;
printf("Enter a word: ");
scanf("%[^\n]s",s);
len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]>=65&&s[i]<=90)
{
s[i]=s[i]+32;
}
}
for(i=0;i<len;i++)
{
if(s[i]=='a'|| s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u')
{
break;
}
}
pg[len]='a';
pg[len+1]='y';
for(j=0;j<len-i;j++)
{
pg[j]=s[i+j];
}
for(k=0;k<i;k++)
{
pg[j+k]=s[k];
}
printf("Pig Latin word is: %s",pg);
}
我检查了在任何步骤中字母是否不是指定的所需字母。但不是。通过代替使用线路
printf("Pig Latin word is: %s",pg);
if i use
for(i=0;i<len+2;i++)
{
printf("%c",pg[i]);
}
它显示正确。为什么
您的代码按原样对我有效,但这可能是运气。您仍然需要以零终止字符串,因为声明为局部变量的数组不一定初始化为零。尝试添加:
pg[len + 2] = '\0';
不相关,但请考虑在 printf 格式字符串中包含换行符:
printf("Pig Latin word is: %s\n", pg);
如果你给它一个像这样的字符串,你的代码也会被破坏
this string is over 100 characters long this string is over 100 characters long this string is over 100 characters long
您需要确保进行正确的边界检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)