0
나는 프로그래밍에 초보자입니다. 나는 2 차원 배열 (문자) 행을 삭제하려면이 간단한 코드를 작성 :`strcpy '를 사용하여 2D 배열에서 (문자의) 행을 삭제할 때 오류가 있습니까?
#include <stdio.h>
#include <string.h>
#define M_RW 100
#define M_CH 100
void ArrIn (char a[][M_CH], int &n)
{
for (int i = 0; i < n; i++)
{
printf("a[%d] = ", i);
gets(a[i]);
}
}
void ArrOut (char a[][M_CH], int n)
{
for (int i = 0; i < n; i++)
{
printf("a[%d] = %s\n", i, a[i]);
}
}
void ArrDel (char a[][M_CH], int &n, int position)
{
for (int i = position; i < n - 1 ; i++)
{
strcpy(a[i+1], a[i]);
}
n--;
}
void main()
{
char a[M_RW][M_CH];
int n, k;
printf("Number of row: n = "); scanf("%d", &n);
fflush(stdin);
printf("\n---\n\n");
ArrIn(a, n);
printf("\n---\n\n");
ArrOut(a, n);
printf("\n---\n\n");
printf("Want to delete row: k = "); scanf("%d", &k);
fflush(stdin);
ArrDel(a, n, k);
printf("\n---\n\n");
ArrOut(a, n);
printf("\n---\n\n");
}
내가, 내가 입력 일부 데이터를 컴파일 후 :
+ n = 5;
+ a[0] = "Careless whisper";
+ a[1] = "I feel so unsure";
+ a[2] = "As I take your hand";
+ a[3] = "And lead you to the dance floor";
+ a[4] = "...";
+ k = 2;
나는이 같은 결과를보고 싶습니다 :
+ a[0] = Careless whisper
+ a[1] = I feel so unsure
+ a[2] = And lead you to the dance floor
+ a[3] = ...
, 그것은 반환
+ a[0] = Careless whisper
+ a[1] = I feel so unsure
+ a[2] = I feel so unsure
+ a[3] = I feel so unsure
이유가 모르겠다. a[1]
반복 횟수.
나를 보여줄 수 있습니까? strcpy
을 사용하면 틀린 점이 있습니까?
'FFLUSH (표준 입력)가 '미정의' –
동작 및 INT n' 유효 C 신택스를 호출하지 않다. 참조 인수는 C++에만 있습니다. – Barmar
참조에 의한 전달은 C에서 작동하지 않습니다. – haccks