Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    ý là sao vậy anh [IMG]images/smilies/biggrin.png[/IMG]...cái này là thấy em bắt viết theo kiểu này [IMG]images/smilies/biggrin.png[/IMG]...

    - - - Nội dung đã được cập nhật ngày 11-03-2014 lúc 07:55 PM - - -

    Up lên nào [IMG]images/smilies/biggrin.png[/IMG] [IMG]images/smilies/biggrin.png[/IMG] [IMG]images/smilies/biggrin.png[/IMG]

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Lỗi về việc ghi và đọc từ buffer

    Dưới đây là code về cái buffer của em...Em làm bài tập hệ điều hành nhưng khi chạy case3 thì không chạy được....khi em f10 thì nhận thấy mảng str không nhận giá trị . Em thực sự không hiểu...Mọi người cho em ý kiến nhé [IMG]images/smilies/biggrin.png[/IMG]

    Mã:
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    
    int N, in, out, num_e;
    void **table;
    
    void fifodestroy();
    int fifoempty();
    int fifoput(void *next);
    void fifoinit(int size);
    
    /*init queue*/
    void fifoinit(int size)
    {
    	num_e = 0; in = 0; out = 0;
    	N = size;
    	printf("fifo init
    ");
    
    	table = (void**)malloc(N*sizeof(void*));
    
    }
    
    /*free memmory*/
    void fifodestroy()
    {
    	int i;
    	if (!fifoempty())
    		free(table);
    	else
    	{
    		for (i = out; i<in; i++)
    		{
    			free(table[i]);
    		}
    		free(table);
    	}
    }
    /*empty queue = 1 else 0*/
    int fifoempty()
    {
    	return(num_e == 0);
    }
    
    /*insert element*/
    int fifoput(void *next)
    {
    	if (num_e == N)
    		return 0;
    	else
    	{
    		while (num_e < N)
    		{
    			table[in] = next;
    			num_e++;
    			in = (in + 1) % N;
    
    
    		}
    		return(1);
    	}
    	
    
    
    }
    void fifoget(void *next1)
    {
    	while (num_e > 0)
    	{
    		next1 = table[out];
    		num_e--;
    		out = (out + 1) % N;
    		
    	}
    	
    }
    
    
    int main(int argc, char* argv[])
    {
    	int y = 1;
    	int y1 = 0;
    	char *p,*q, str[64];
    
    	
    	printf(" Give an integer for size: ");
    	scanf_s("%d", &y);
    	fifoinit(y); /*init fifo*/
    
    	do
    	{
    		putchar('
    ');
    		printf(" 0: Exit
    ");
    		printf(" 1: Insert string
    ");
    		printf(" 2: Print next string
    ");
    		printf(" 3: Output String");
    		fflush(stdin);
    		printf(" Choose one of the above options:  ");
    		scanf_s("%d", &y1);
    
    		switch (y1)
    		{
    
    		case 1:
    		{
    
    
    				  printf(" Insert elements
    
    ");
    				  printf(" Give string ");
    
    				  fflush(stdin);
    				  scanf_s("%s", str);
    				  fflush(stdin);
    				  p = _strdup(str);
    				  fflush(stdin);
    				  printf(" %s", p);
    
    				  if (!(fifoput((void*)p)))
    				  {
    					  free(p);
    					  printf(" Table is full
    ");
    				  }
    				  else
    				  {
    					  printf(" Insert successful
    ");
    				  }
    
    
    		}
    
    		case 2:
    		{
    				  printf("Get elements
    
    ");
    
    
    		}
    			break;
    		case 3:
    		{
    
    				  q = "";
    				  fifoget(q);
    				  fflush(stdin);
    				  printf("  %s", q);
    
    				
    				  break;
    
    		}
    		}
    	} while (y1 != 0);
    
    
    	fifodestroy();
    	//   exit(0);
    }

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cài queue đã có std::queue [IMG]images/smilies/smile.png[/IMG]

    p/s: q đang truyền vào theo tham trị [IMG]images/smilies/biggrin.png[/IMG]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •