Thắc mắc về hàm và con trỏ

đây là 2 hàm em tạo ra

//hàm lấy chuỗi char từ bàn phím và gán chuỗi con cho con trỏ char
void change(char *a)
{
	fgets(a,100,stdin);
	char *chuyen = strtok(a," ");
}

//hàm tính toán 
void elevator(char *a)
{
	system("cls");
	cout << "nhap tang hien tai - tang can den - tai trong\n";

//em dùng hàm change(a) truyền a ở đây
	change(a);
	int  sotang,watt,i = 0;
	int elevator[10];

//đoạn vòng lặp dùng tham số a này ạ
	while(a != NULL || i<=3)
	{
		elevator[i] = atoi(a);
		i++;
		a = strtok(NULL," ");
	}
/*
	if(elevator[3] != NULL || elevator[1] == NULL || elevator[2] == NULL)
	{
		cout << "nhap sai du lieu";
		return;
	}
	int tang_di = elevator[0];
	int tang_den = elevator[1];
	int tai_trong = elevator[2];
	if(tai_trong > 700) {
	cout <<  "Qua tai";
	return ;
	}
	
	sotang = tang_den - tang_di;
	if(tang_di<tang_den) watt = abs(sotang)*tai_trong*10;
	else watt = abs(sotang)*tai_trong*2;
	cout << "nang luong can cap cho thang may la: " << watt;
*/
}

cho em hỏi sao có thể dùng a tại đó như 1 tham số được vì nếu k dùng hàm thì đoạn đó như này

	fgets(a,100,stdin);
	//tach chuoi thanh cac chuoi con
	char *chuyen = strtok(a," ");
	
	while(chuyen != NULL)
	{
		//chuyen chuoi thanh so thuc
		float _s = atof(chuyen);
		s_yeucau += abs(_s);
		//sac pin
		if(_s == 0)
		{
			cout << "dung lai sac: \n";
			pin +=25;
			if(pin > 100) pin = 100;
			cout << "pin sau khi sac: " << pin << endl; 
		}

nếu truyền tham số str của hàm strtok là một char * không NULL thì đồng thời nó sẽ lưu lại giá trị và mình đã truyền vào lần cuối nên sau này khi gọi strtok với tham số str là NULL pointer thì nó sẽ biết được chuỗi lần cuối mà mình truyền vào

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