Thắc mắc về lỗi trong C

Đoạn code dưới của em bị lỗi không biết sửa như nào ạ, ví dụ khi nhập mảng kích thước 2x3 tức là có 6 phần tử nhưng nó bắt mình nhập 7 số, giả sử em nhập 7 số đó lần lượt là 1 2 3 4 5 6 7 thì nó mảng chỉ nhận đúng 6 phần tử đầu và bỏ phần tử cuối.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

void NhapMang(int* &p, long long &d, long long &c)
{
	printf("Nhap so dong cua mang: ");
	scanf_s("%lld", &d);
	printf("Nhap so cot cua mang: ");
	scanf_s("%lld", &c);
	p = (int*)malloc(d * c * sizeof(int));
	printf("\n");
	for (int i = 0; i < d; i++)
	{
		for (int j = 0; j < c; j++)
		{
			printf("Nhap a[%d][%d] ", i + 1, j + 1);
			scanf_s("%d ", (p + c * i + j));
		}
	}
	printf("\n");
}

void XuatMang(int* p, long long d, long long c)
{
	printf("Mang vua nhap la:\n");
	for (int i = 0; i < d; i++)
	{
		for(int j = 0; j < c; j++)
		{
			printf("%d\t", *(p + c * i + j));
		}
		printf("\n");
	}
	printf("\n");
}

void TongCot(int* p, long long d, long long c, FILE* f)
{
	for(int i = 0; i < c; i++)
	{
		int sum = 0;
		printf("Tong cac phan tu cot %d la ", i + 1);
		for(int j = 0; j < d; j++)
		{
			sum += *(p + c * j + i);
		}
		printf("%d\n", sum);
		fprintf(f, "%d\t", sum);
	}
}

int main()
{
	long long d, c;
	int* p;
	FILE* f;
	f = fopen("D:\\output2.txt", "w+");
	NhapMang(p, d, c);
	XuatMang(p, d, c);
	TongCot(p, d, c, f);

	return 0;

123

キャプチャ
Xí kí tự " " sau %d đi là được.

5 Likes

Dạ được rồi, cảm ơn anh :smiley:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?