如何用元素填充 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;
}
不是完全的 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;
}