如何用元素填充字符数组,如果按Enter(在键盘上),它将结束FOR循环并打印整个数组直到Enter

问题描述 投票:0回答:1

不是C语言的初学者。昨天,我得到了标题中所述的任务,要在数组中输入元素,直到按Enter。如果按它会破坏它。任务中还有更多内容。但是其余部分很容易编写。所以这一半的代码使我很麻烦。基本上,我知道如何输入ASCII表中的.或任何其他字符,但如何输入ENTER或DELETE或类似的字符。如果您可以提供解决方案的代码。我将不胜感激。

编辑:尝试过使用\n\r,甚至将数组转换为int并与表示LINE FEED的ASCII表中的10进行了比较,也尝试了使用getchar(),但没有任何效果。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define MAX 50

void main() {
    char array_org1[MAX], array_org2[MAX];
    int size1=0,size2=0;
    printf("\nEnter the values of the first array:\n");

    for (int i = 0; i < MAX; i++) {


        printf("element[%d] = ", i);
        scanf(" %c", &array_org1[i], sizeof(array_org1));

        if (array_org1[i] == '.')
        {
            break;
        }
        else
        {
            size1++;
        }

    }   

    printf("\nEnter the values of the second array :\n");

    for (int i = 0; i < MAX; i++) {

        printf("element[%d] = ", i);
        scanf(" %c", & array_org2[i], sizeof( array_org2));
        if (array_org2[i] == '.')
        {
            break;
        }
        else
        {
            size2++;
        }

    }
    printf("\n");

    printf("First array:");
    for (int i = 0; i < size1; i++) {

        printf("%c ",  array_org1[i]);

    }
   printf("\nSecond array:");
    for (int i = 0; i < size2; i++) {

        printf("%c ", array_org2[i]);

    }

    printf("\n");   
}

Here is the result of the code above

c arrays element break enter
1个回答
0
投票

我认为您需要ro编写类似于以下的函数。

size_t fill( char *s, size_t n )
{
    size_t i = 0;

    for ( int c; i < n && ( c = getchar() ) != EOF && c != '\n'; i++ )
    {
        s[i] = c;
    }

    return i;
}

这里是示范节目

#include <stdio.h>

#define MAX 50

size_t fill( char *s, size_t n )
{
    size_t i = 0;

    for ( int c; i < n && ( c = getchar() ) != EOF && c != '\n'; i++ )
    {
        s[i] = c;
    }

    return i;
}

int main(void) 
{
    char array_org1[MAX], array_org2[MAX];
    size_t size1 = 0, size2 = 0;

    printf( "Enter the values of the first array: " );

    size1 = fill( array_org1, MAX );

    printf( "\nEnter the values of the second array: " );

    size2 = fill( array_org2, MAX );

    printf( "\nFirst array: " );
    for ( size_t i = 0; i < size1; i++ ) 
    {
        putchar( array_org1[i] );
    }

    putchar( '\n' );

    printf( "Second array: " );
    for ( size_t i = 0; i < size2; i++ ) 
    {
        putchar( array_org2[i] );
    }

    putchar( '\n' );

    return 0;
}

其输出可能看起来像

Enter the values of the first array: Hello

Enter the values of the second array: World!

First array: Hello
Second array: World!

如果填充的数组应包含一个字符串,则该函数可以看起来像

size_t fill( char *s, size_t n )
{
    size_t i = 0;

    for ( int c; i + 1 < n && ( c = getchar() ) != EOF && c != '\n'; i++ )
    {
        s[i] = c;
    }

    s[i] = '\0';

    return i;
}
© www.soinside.com 2019 - 2024. All rights reserved.