不是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");
}
我认为您需要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;
}