這是一個帶字符串的程序,我嘗試 豬拉丁語翻譯只是取一個「單詞」的第一個字母,並將該單詞的後面追加「ay」加到結束以及C中的字符串問題
我有問題與m1 = m2 + 3(重置初始標記)。
輸入,我給: 「亞歷克斯,怎麼是你的權利」
我期待的輸出是:lexay,owhay雷伊ouyay ightray
但
我得到這個:法,AAY方式唉亞青gayi
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void initialize(char english[], char piglatin[]);
void readinput (char english[]);
int countwords(char english[]);
void convert (int words, char english[], char piglatin[]);
void writeoutput(char piglatin[]);
int main()
{
char english[80], piglatin[80];
int words;
initialize(english, piglatin);
printf("enter the string\t");
fflush(stdin);
gets(english);
printf ("\nInput buffer contents: %s\n", english);
words = countwords(english);
convert(words,english,piglatin);
writeoutput(piglatin);
printf ("Have a nice day\n");
}
void initialize(char english[], char piglatin[])
{
int count;
for(count =0; count<80;++count)
{
english[count]=piglatin[count]=' ';
}
return;
}
/* Scan the english test and determine the number of words */
int countwords(char english[])
{
int count, words =1;
for (count =0;count <79;++count)
{
if(english[count]==' ' && english[count+1]!=' ')
++words;
}
printf("%d\n",words);
return (words);
}
/* convert each words in to piglatin*/
void convert (int words, char english[], char piglatin[])
{
int n, count;
int m1=0;
int m2;
/* convert each word */
for (n=1;n<=words;++n)
{
/* locate the end of the current word*/
count = m1;
printf ("\ before conversion word contents: %d\n", count);
while (english[count]!=' ')
{
m2=count++;
}
printf ("\ before conversion word contents: %d\n", m2);
/* transpose the first letter and add 'a', 'y'*/
for (count =m1;count<m2;++count)
{
piglatin[count+(n-1)]=english[count+1];
}
piglatin[m2+(n-1)] = english[m1];
piglatin[m2+1] = 'a';
piglatin[m2+2] = 'y';
m1=m2+3;
printf ("\ Converted word contents: %s\n", piglatin);
}
return;
}
void writeoutput(char piglatin[])
{
int count =0;
for (count =0; count <80; ++count)
{
putchar(piglatin[count]);
}
printf ("\n");
return;
}
你忘了問一個問題。如果問題是如何調試這樣的問題,你應該告訴我們你正在使用的調試器。 –
'fflush(stdin)'是未定義的行爲,'gets'調用緩衝區溢出。 –
我無法弄清楚你所希望的'piglatin [count +(n-1)] = english [count + 1];'會的,但它不可能是正確的。明膠字符串將包含每個單詞兩個額外的字符,那麼'count +(n-1)'怎麼可能是正確的呢? –