c功能输出数组跳过字符

时间:2016-10-17 22:17:01

标签: c arrays function output

大家好,我正在做作业,我有问题...我有这两个功能:

1)

int * input()
{   
int c;
static int val[17];
int count;

count = 0;
while(((c = getchar()) != EOF) && (count != 16)) 
{   
    if(c == '\n')   // riesi \n za na konci echa
    {
        break;
    }
    val[count] = c;
    count++;
}
val[count] = EOF; 
count = 0;

return val;
}
</code>

2)

<code>int output_none()
{
int *val;
int count;
int pos = 0;
do
{
    val = input();
    printf("%08x ", pos);
    pos = pos + 16;

    count = 0;
    //for(int i = 0; val[i] != EOF; i++)
    while(val[count] != EOF)
    {
        printf("%02x  ", val[count]);
        count++;
        if(count == 8)
        {
            printf(" ");
        }
    }
    if(count < 16)
    {
        while(count != 16)
        {
            printf("    ");
            count++;
        }
    }

    count = 0;
    printf("|");
    //for(int i = 0; val[i] != EOF; i++)
    while(val[count] != EOF)    
    {
        printf("%c", val[count]);
        count++;
    }
    printf("|\n");


}while(count == 16);
}
</code>

我的问题是输出:回声“你好,世界!Ahoj svete!” | ./proj1

应该是: 00000000 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 20 41 68 |你好,世界!阿| 00000010 6f 6a 20 73 76 65 74 65 21 0a | oj svete!。 |

但我得到的是: 00000000 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 20 41 68 |你好,世界!阿| 00000010 6a 20 73 76 65 74 65 21 | j svete!|

我不知道为什么我的代码在第二轮输入时跳过一些字符...对不起这篇可怕的书面文章...我正在通过手机写它,因为我的笔记本电脑死了,我正在去火车途中学校。感谢。

0 个答案:

没有答案