你能用getchar()来分配数组中的元素吗? [C]

时间:2015-03-13 04:27:06

标签: c

我正在编写一个程序,该程序输入一个输入的句子并将其转换为"互联网术语。" (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;
}

2 个答案:

答案 0 :(得分:0)

  1.   

    我想知道我是否能够使用getchar()来分配我的数组中的不同元素。

  2. 是的,你可以。

    1.   

      我也遇到了第一个for循环中break语句的问题,我不确定它是否与使用getchar()有关。

    2. 要阅读整行或字符,您可以使用此

      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阻止错误的索引和分段错误时