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

How to fill a char array with elements, if you press Enter (on keyboard) it should end FOR loop and print the whole array till Enter

不是完全的 C 语言初学者。昨天我得到了一个任务,就像我在标题中所说的那样,输入数组中的元素,直到按下 ENTER 键。如果你按下它会打破它。任务中给出的内容更多。但其余部分很容易写。所以这一半代码让我很麻烦。基本上我知道如果我输入 . 或来自 ASCII table 的任何其他字符如何中断,但如果它是 ENTER 或 DELETE 或类似的类似字符。如果您可以提供解决方案的代码。我将不胜感激。

编辑: 尝试使用 \n\r,甚至转换为 int 数组并与 ASCII table 中的 10 进行比较,后者表示 LINE FEED,也尝试使用 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

我想你需要写一个类似于下面的函数。

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] = '[=13=]';

    return i;
}