我正在编写一个程序,该程序输入一个输入的句子并将其转换为"互联网术语。" (B1FF发言) 例如:
Enter message: Hey dude, C is rilly cool
In B1FF-speak: H3Y DUD3, C 15 R1LLY C00L!!!!!!!!!!
我想知道我是否能够使用getchar()
来分配我的数组中的不同元素。
我刚刚意识到我的代码在!!!!!!!
之前打印了这么多字符的原因是因为数组大小,我现在正在改变
#define N 50
#define SIZE ((int) (sizeof(a) / sizeof(a[0])))
int main(void)
{
int a[N] = {0}, i, j;
printf("Enter message: ");
for(j = 0, i = 0;; j++, i++)
{
a[i] = getchar();
if (a[i] = '\n')
break;
}
printf("In B1FF-speak: ");
for(i = 0; i < j; i++)
{
switch (toupper(a[i]))
{
case 'A':
printf("4");
break;
case 'B':
printf("8");
break;
case 'E':
printf("3");
break;
case 'I':
printf("1");
break;
case 'O':
printf("0");
break;
case 'S':
printf("5");
break;
default:
putchar(a[i]);
break;
}
}
printf("!!!!!!!!!!");
return 0;
}
答案 0 :(得分:0)
我想知道我是否能够使用getchar()来分配我的数组中的不同元素。
是的,你可以。
我也遇到了第一个for循环中break语句的问题,我不确定它是否与使用getchar()有关。
要阅读整行或字符,您可以使用此
int getcharRet;
while((getcharRet = getchar()) != '\n' && getcharRet != EOF)
a[i] = getcharRet;
答案 1 :(得分:0)
尝试更改if
循环中的for
-
if (a[i] = '\n')
到
if (a[i] == '\n')
声明(a [i] =&#39; \ n&#39;)不是条件,是否为作业。
修改强>
更好的输入循环可以
for(j = 0, i = 0; i < N-1; j++, i++)
当条件i < N-1
阻止错误的索引和分段错误时