banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix lập trình C trong ubuntu!  XML
  [Question]   lập trình C trong ubuntu! 26/05/2010 13:31:17 (+0700) | #1 | 211680
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
Các anh chi ơi giúp em với!
Em có một bài tập về lập trình C trong Ubuntu em không làm được, mong các anh chị giúp đỡ em!
Đề bài là: Viết chương trình tìm dòng dài nhất trong một tập tin!
Mong các anh chị giúp em!Em cảm ơn nhiều nhiều
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 26/05/2010 17:17:52 (+0700) | #2 | 211694
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
Code:
/*
    Pham The Chung
   26/5/2010
*/
#define MAX(x,y) ((x)>(y)?(x):(y))
struct Line_Object{
	int length;
	int lineth;
	char text[0];
};
/*
  m must end with NULL character

*/
void get_longest_line(char *m,struct Line_Object *buf){
	int len=0,lenp=0,lineth=1,linepos=0;
	while(*m!=NULL){
	  len++;
	  if(*m=='\n') {
		if(len>lenp) linepos=lineth;
		len=MAX(len,lenp);
		lenp=len;
		len=0;
		lineth++;
	  }
		m++;
	}
	out:
          buf->length=lenp;
	  buf->lineth=linepos;
	//buf->text=... unable to written now
}

đó là phần mới phát triển được
đã test thành công chạy đúng.
nếu đưa host hay email thì mình đưa cho bạn file source đã test
update: bạn test thử dùm mình vì hàm này chưa chắc đúng hoàn toàn
mình chỉ thử 1 trường hợp thì đúng
nếu có nhiều hàng dài và bằng nhau thì hàm này record hàm đầu tiên
[Unix] live free or die
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 26/05/2010 19:01:14 (+0700) | #3 | 211698
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
Em cảm ơn anh nhiều nhiều ạ! Cảm ơn anh đã giúp đỡ em!
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 26/05/2010 19:20:33 (+0700) | #4 | 211699
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
không có chi,nếu bạn có thuật toán tốt hơn post lên cho mình tham khảo
tiện hỏi, bạn học trường nào mà bài tập khó vậy ?
[Unix] live free or die
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 26/05/2010 20:16:57 (+0700) | #5 | 211701
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
hihi!Giờ tớ mới học ubuntu nên không biết lập trình như thế nào !Tớ hoc trường Tây Bắc ah.Bạn học trwongf nào thế?ah bạn có tài liệu nào về lập trình trên ubuntu thì cho share tớ với, tớ muốn học vì sắp thi rồi mà không biết gì hết a!
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 26/05/2010 22:43:14 (+0700) | #6 | 211708
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
‘NULL’ undeclared (first use in this function)
maianh.c:13: error: (Each undeclared identifier is reported only once
maianh.c:13: error: for each function it appears in.)
bạn ơi lỗi này là như thế nao?
Tớ không chạy đựoc a.
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 26/05/2010 22:44:24 (+0700) | #7 | 211709
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
ah có gì bạn gửi vào địa chỉ mail này cho mình nha wind_autumn12389@yahoo.com
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 27/05/2010 06:31:06 (+0700) | #8 | 211716
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]
Chỉ nên gợi ý, không nên làm giúp bất cứ thứ gì. Làm giúp là làm hư và tập tính ỷ lại. Mai sau đi làm sẽ cực kỳ vất vả nếu quen với tính ỷ lại này.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 27/05/2010 07:12:49 (+0700) | #9 | 211717
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
conmale: quá cảm tính rùi !
mình cũng chỉ gơi ý,nếu gặp trục trặc thì phải giúp thôi

hoangphuong0808:
nếu không có NULL thì bạn định nghĩa NULL
Code:
#ifndef NULL
   #define NULL (0)
#endif

//định nghĩa này là định nghĩa không chuẩn, sẽ warning trong một số trường hợp nhưng xài được

mình đã gửi email


[Unix] live free or die
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 27/05/2010 08:07:05 (+0700) | #10 | 211720
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

panfider wrote:
conmale: quá cảm tính rùi !
mình cũng chỉ gơi ý,nếu gặp trục trặc thì phải giúp thôi

hoangphuong0808:
nếu không có NULL thì bạn định nghĩa NULL
Code:
#ifndef NULL
   #define NULL (0)
#endif

//định nghĩa này là định nghĩa không chuẩn, sẽ warning trong một số trường hợp nhưng xài được

mình đã gửi email


 


Không phải cảm tính mà là nguyên tắc. Bất cứ bài tập hoặc thực hành nào cũng nên tự làm và tự vận động thì mới thu thập được kiến thức + kinh nghiệm. Làm giúp chỉ khiến cho người "hưởng" copy & paste là xong. Không nên.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 27/05/2010 09:55:17 (+0700) | #11 | 211727
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
sorry conmale
mình cũng không cho là conmale "cảm tính"
với lại hàm mình viết hoàn toàn chưa hoàn chỉnh, và đề bài thì yêu cầu không rõ ràng
muốn viết tới đâu thì viết tới đó

[Unix] live free or die
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 27/05/2010 11:46:56 (+0700) | #12 | 211729
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
Hihi! Sorry conmale và mọi người nha, tớ vừa mới bắt đầu học ubuntu mà đã phải lập trình trên đó rồi, tớ đọc tài liệu thấy khó hiểu quá mới đi hỏi mọi người mà. Có gì thì mọi người thông cảm cho tớ nha. Tớ là thành viên mới nên chưa biết nhiều mà. Chắc chắn là tớ sẽ còn nhiều thắc mắc trong thời gian tới mong mọi người giúp đỡ tớ. Nếu có gì không đúng mong conmale và mọi ngừoi bỏ qua cho tớ nha!hihi smilie
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 27/05/2010 19:50:02 (+0700) | #13 | 211744
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
qua http://congdongcviet.com để chuyên về C hơn
với lại tụi nó code C++ hoặc C# more advance hơn mình he he
[Unix] live free or die
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 27/05/2010 23:44:32 (+0700) | #14 | 211753
[Avatar]
H3x4
Member

[Minus]    0    [Plus]
Joined: 02/04/2009 00:03:16
Messages: 242
Offline
[Profile] [PM]
Theo mình để giải quyết 1 bài toán như vậy bạn hãy suy nghĩ xem nếu bạn là CPU bạn sẽ làm gì, mình sẽ:
1/ Mở file/Tập tin đó ra
2/Đọc vào từng dòng
3/Đếm số chữ cái trên 1 dòng
4/Ghi số đó vào 1 tờ giấy nháp( và ghi số dòng)
5/Đọc đến hết file/tập tin
6/Đóng file/tập tin lại
7/ Tìm con số lớn nhất trong tờ nháp

=> hiện thực tương tự bằng C.
Lấy thí dụ để mở tập tin bạn có thể google : "C open file", tờ giấy nháp là một mảng tạm để lưu các con số ......
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 28/05/2010 20:55:11 (+0700) | #15 | 211838
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
ừ mình cũng nghĩ tuơng tự như thế
[Unix] live free or die
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 28/05/2010 22:46:10 (+0700) | #16 | 211841
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
tớ chạy rùi nhưng nó báo:
laptrinhnhom4.c: In function ‘get_longest_line’:
laptrinhnhom4.c:14: warning: comparison between pointer and integer
laptrinhnhom4.c: In function ‘main’:
laptrinhnhom4.c:51: warning: assignment makes integer from pointer without a cast
laptrinhnhom4.c:55: warning: assignment makes integer from pointer without a cast
giúp tớ với, tớ không biết sửa thế nào

[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 28/05/2010 23:59:35 (+0700) | #17 | 211842
[Avatar]
H3x4
Member

[Minus]    0    [Plus]
Joined: 02/04/2009 00:03:16
Messages: 242
Offline
[Profile] [PM]

bạn cứ dịch các câu warning của nó ra mà sửa là được. Thí dụ nha:
laptrinhnhom4.c:14: warning: comparison between pointer and integer
ở dòng thứ 14 trong file laptrinhnhom4.c bạn đã so sánh 1 con trỏ và 1 số interger.
Thí dụ thế này: int *p=1
Và a=1
bạn so sánh p va a nó sẽ báo vậy, bạn phải chỉnh lại cho nó so sánh giữa *p và a thì nó mới chịu smilie
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 29/05/2010 06:36:07 (+0700) | #18 | 211843
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
Hix. Bạn giúp tớ sửa được không. Tớ mới tìm hiểu về ubuntu mà thầy đã yêu cầu lập trình trên nó. Mọi người giúp tớ sửa rùi chạy bài này vơi. Thank mọi người nhiều:
Code:
#include <stdio.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <sys/fcntl.h>
#include <malloc.h>
#define MAsmiliex,y) ((x)>(y)?(x)smiliey))
struct Line_Object{
int length;
int lineth;
char text[0];
};
void get_longest_line(char *m,struct Line_Object *buf){
int len=0,lenp=0,lineth=1,linepos=0;
while(*m!=NULL){
len++;
if(*m=='\n') {
if(len>lenp) linepos=lineth;
len=MAsmilielen,lenp);
lenp=len;
len=0;
lineth++;
}
m++;
}
out:
buf->length=lenp;
buf->lineth=linepos;
//buf->text=... unable to written now
}

int main(int argc,char **argv){
#define FILEFRAG (1024*16)
char *filename;
int filesize=0,fd=-1,sta_read=0;
char *buf=NULL;
/*get file name*/
if(argc>1) filename = argv[1];
else {
printf("%s: no file name argument \n",argv[0]);
exit(1);
}
struct stat fod;
int sta_file=stat(filename,&fod);
if(sta_file) {printf("%s: error stat file %s\n",argv[0],filename);exit(1);}
filesize=fod.st_size;
fd=open(filename,O_RDONLY,0);
if(fd<0) {printf("%s:error open file %s",argv[0],filename);exit(1);}
if(filesize<=FILEFRAG){
buf=(char*)malloc(filesize+2);
sta_read=read(fd,buf,filesize);
buf[filesize]=NULL;
}else{
buf=(char*)malloc(FILEFRAG+2);
sta_read=read(fd,buf,FILEFRAG);
buf[FILEFRAG]=NULL;
}
if(sta_read!=filesize){
printf("%s: cant read file %s\n",argv[0],filename);
exit(1);
}
//File *fpt=openfile(filename,O_RDONLY);
// continue
struct Line_Object Line;
get_longest_line(buf,&Line);
printf("%s: longest lineth %d %d\n",filename,Line.lineth,Line.length);
return 0;
}
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 29/05/2010 06:49:11 (+0700) | #19 | 211844
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
hix. bạn có thể hộ tớ phần code cho ý tưởng ấy được không. Giúp tớ với. Tớ rất cần!
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 29/05/2010 06:51:35 (+0700) | #20 | 211845
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]

H3x4 wrote:
Theo mình để giải quyết 1 bài toán như vậy bạn hãy suy nghĩ xem nếu bạn là CPU bạn sẽ làm gì, mình sẽ:
1/ Mở file/Tập tin đó ra
2/Đọc vào từng dòng
3/Đếm số chữ cái trên 1 dòng
4/Ghi số đó vào 1 tờ giấy nháp( và ghi số dòng)
5/Đọc đến hết file/tập tin
6/Đóng file/tập tin lại
7/ Tìm con số lớn nhất trong tờ nháp

=> hiện thực tương tự bằng C.
Lấy thí dụ để mở tập tin bạn có thể google : "C open file", tờ giấy nháp là một mảng tạm để lưu các con số ......
 


]hix. bạn có thể hộ tớ phần code cho ý tưởng ấy được không. Giúp tớ với. Tớ rất cần! 
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 29/05/2010 12:01:31 (+0700) | #21 | 211853
FaL
Moderator

Joined: 14/04/2006 09:31:18
Messages: 1232
Offline
[Profile] [PM]
Bạn hoanphuong0808:
Từ những gợi ý trên bạn nên tự tìm tòi và tự viết lấy chương trình của mình.
Hãy giữ một trái tim nóng và một cái đầu lạnh
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 29/05/2010 14:34:44 (+0700) | #22 | 211857
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
để mình code lại file này
và comment từng dòng step by step
OK ?
Sau này để hướng dẫn cho C newbie trên Linux mình sẽ có ví dụ cực hay. Guide theo từng lớp step by step
hoangphuong0808:
bài này mình code dùng system call nên khó hiểu.
bạn có thể dùng thư viện stdio.h : trong đó có hàm fopen để mở file

đề bài: tìm dòng dài nhất trong file text
hiểu đề bài: có một file text trên trời rơi xuống và tìm dòng dài nhất
mà tìm là sao, tức là thấy nó dài thì định vị nó
làm sao định vị nó, bằng cách nói ra số thứ tự của dòng đó
thêm thông tin nữa là ghi nhận lại dòng đó

+thông tin về cách thức file text xuống dòng:
file text là file thường, có nội dung là các kí tự ASCII liên tiếp nhau
để xuống dòng người ta dùng character đặc biệt kí tự xuống dòng: mã là 0xa
vì kí tự này không hiển thị nên để diễn đạt nó: ta dùng LF để nói về nó
đó là cách của Unix phân cách dòng.
Trên Window notepad dùng 2 kí tự để xuống dòng CRLF
Nếu tra trong bảng mã ASCII thì bạn sẽ hiểu
suy ra: nếu quét qua file và count được số kí tự xuống dòng (cũng chính là số dòng) đồng thời count được số kí tự trong dòng. Và quá trình quét so sánh liên tục đến hết file thì sẽ tìm được dòng dài nhất.
+hướng giải:
Vì file trên đĩa và các toán tử của C chỉ làm việc với bộ nhớ, nên ta tìm cách đọc file vào bộ nhớ hay map file vào bộ nhớ.
Việc map file vào bộ nhớ có nhiều cách :
Cách: + dùng thư viện stdio.h có hàm fopen() fclose() //khuyên bạn nên xài vì đơn giản
+dùng system call: cách này hơi khó nhưng hay và nhanh hơn 

Cách sử dụng stdio.h thì mình sẽ hướng dẫn mở file và đọc như thế nào.
cách này được sử dụng nhiều nhất vì mở file đơn giản không phức tạp.
Nhưng mình đã gửi code cho bạn xài bằng cách system call. Khó cho newbie.
Nhưng lỡ rùi thì mình giải thích sơ sơ qua:
trước tiên phải stat file để biết file đó có tồn tại không, nếu có thì đồng thời cũng có thể lấy thông tin về file đó, file đó có cho đọc không
Code:
struct stat fod; //của /usr/include/sys/stat.h
                                   if(stat(filename,&fod)) {
                                           printf("error: khong stat được file\n");/của stdio.h
                                           exit (1); //của stdlib.h
                                   }

int filesize=fod.st_size;
int fd =open(const char *filename,int oflag,...); //trong /usr/include/fcntl.h
sau khi mở thì đọc file vào bộ nhớ
để map file thì hơi khó nhưng giả sử file nhỏ dưới 8096 bytes tức 8KB
ta khai báo bộ nhớ chứa:
char buf[8096]; // lưu ý buf là địa chỉ
đọc vào bộ nhớ
int rd_size=read(fd,buf,filesize);
if(rd_size<0) exit(1);//nếu trong main
việc còn lại là module của mình làm thôi
Code:
/*
    Written by panfider
    module tìm dòng dài nhất trong file
    May 28 2010
    usage:
     struct Line_Object Line; // định nghĩa biến Line
     get_longest_line(buf,&Line); // buf là bộ nhớ của file đã map,return lại  Line 
     printf("%s: longest lineth %d %d\n",filename,Line.lineth,Line.length); 
*/
#define MAX(x,y) ((x)>(y)?(x):(y)))
struct Line_Object{
    int length;  //độ dài dòng đó
    int lineth;  //dòng thứ mấy
    char text[0]; // text của dòng đó, kiểu nối tiếp
};
void get_longest_line(char *m,struct Line_Object *buf){
        int len=0,lenp=0,lineth=1,linepos=0;
        while(*m!=NULL){
            len++;
            if(*m=='\n') {
               if(len>lenp) linepos=lineth; 
               len=MAX(len,lenp);
               lenp=len;
               len=0;
               lineth++;
            }
         m++;
        }
        out:
        buf->length=lenp;
        buf->lineth=linepos;
        //buf->text=... unable to written now
}


Nếu muốn xử lý file quá lớn(vài GB) thì khi stat file kiểm tra xem file đó có lớn hơn một
#define N 8 // thay thế * bằng số khác
#define MAX_READ_SIZE (N*1024) //tính theo Kbytes
Nếu file lớn hơn định nghĩa thì dùng lseek để seek và map từng fragment vào bộ nhớ
/// trình tự logic của việc giải
1. lấy name-of-file (tên file) từ int main(int argc,char **argv)
hoặc file chắc chắn có sẵn:char *filename="abc.txt";
2. mở file,
dùng fopen để mở nếu trả về NULL thì không mở được
hình dạng:FILE *fopen(const char *path, const char *mode);
Code:
FILE *fp=fopen(filename,"r");
        if(FILE==NULL) {
           printf("There's some problem with this file");
           exit(1);
        }

3. dùng fget hoặc hàm nào đó để đọc từng kí tự để count thì giải được bài tập
nếu bạn mò được địa chỉ bộ nhớ trong FILE trả về thì dùng được module của mình
đọc link sau đây sẽ có hướng dẫn về cách xài stdio.h
http://en.wikipedia.org/wiki/Fgetc
http://en.wikipedia.org/wiki/Fopen
[Unix] live free or die
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 29/05/2010 17:41:08 (+0700) | #23 | 211862
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
mà file source mình gửi cho bạn hoangphuong0808 chạy được mà
tại bạn không biết cách xài
để tránh output warning:
# gcc -o baitap file.c &>/dev/null
để tìm dòng dài nhất trong file.c thì gõ
# ./baitap file.c

nếu có lỗi thì báo cho mình biết nhé
[Unix] live free or die
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 29/05/2010 21:10:49 (+0700) | #24 | 211875
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]

panfider wrote:
mà file source mình gửi cho bạn hoangphuong0808 chạy được mà
tại bạn không biết cách xài
để tránh output warning:
# gcc -o baitap file.c &>/dev/null
để tìm dòng dài nhất trong file.c thì gõ
# ./baitap file.c

nếu có lỗi thì báo cho mình biết nhé
 


Thank Panfider nhiều nhé. Tại thời gian tìm hiểu đến báo cáo Ubuntu ngắn quá, lại phải lập trình c trên đó nữa. Mà con gái bọn tớ lại lười.Hi lí do. Thank cậu nhiều!!!!
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 29/05/2010 21:23:47 (+0700) | #25 | 211876
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
Panfider ah!
Nó hiện thông báo:
maianh@ubuntu:~$ pico
maianh@ubuntu:~$ gcc -o file.c &>/dev/null
maianh@ubuntu:~$ ./file.c
bash: ./file.c: Permission denied
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 30/05/2010 06:57:56 (+0700) | #26 | 211882
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
# gcc -o baitap file.c
# chmod u+x baitap
# ./baitap file.c

Hiện tại mình đã sửa được thông báo warning của nó.
Nó warining vì
#define NULL ((void *)0x0)
đây hình như không phải kiểu định nghĩa của C mà của C++ trong stdio.h
nếu muốn không warning thì đặt cái này sau #include <stdio.h> hoặc trước C code:
Code:
#ifdef NULL
   #undef NULL
   #define NULL (0x0)
#endif
[Unix] live free or die
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 30/05/2010 16:19:04 (+0700) | #27 | 211910
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
Nó vẫn hiện ra thông báo này panfider ah:
maianh@ubuntu:~$ pico
maianh@ubuntu:~$ gcc -o laptrinhnhom4 laptrinhnhom4.c
maianh@ubuntu:~$ chmod u+x laptrinhnhom4
maianh@ubuntu:~$ ./laptrinhnhom4.c
bash: ./laptrinhnhom4.c: Permission denied
maianh@ubuntu:~$
hix. tớ sắp phải báo cáo rùi. giúp tớ với nhé
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 30/05/2010 16:21:57 (+0700) | #28 | 211911
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
Panfider ah! cho tớ nick của bạn nhé
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 30/05/2010 19:51:13 (+0700) | #29 | 211918
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
ặc ặc:
ok: mình giải thích line by line cho bạn hiểu
/* lệnh gcc biên dịch file source laptrinhnhom4.c ra file binary laptrinhnhom4*/
Code:
maianh@ubuntu:~$ gcc -o laptrinhnhom4 laptrinhnhom4.c

/*
file binary laptrinhnhom4 không chạy được vì mặc định khi tạo file nó không có bit execute(x)
vì thế ta dùng lệnh chmod cho file laptrinhnhom4 để làm cho nó execute
bạn dùng lệnh ls -l thì sẽ thấy, cái này hơi khó vì bạn mới sang Unix chưa wen mode bit
*/
Code:
maianh@ubuntu:~$ chmod u+x laptrinhnhom4

/*
bạn chmod file laptrinhnhom4 thì chạy file đó chứ sao chạy file laptrinhnhom4.c là file source
*/
Code:
maianh@ubuntu:~$ ./laptrinhnhom4.c


"./laptrinhnhom4.c " không là source nên không chạy được mà bạn có chmod cho nó đâu

OK bạn có thể dùng tên của mình
lạm hỏi, bạn học môn gì năm mấy rùi
hình như bạn ở Hà Nội ?
[Unix] live free or die
[Up] [Print Copy]
  [Question]   lập trình C trong ubuntu! 30/05/2010 20:21:43 (+0700) | #30 | 211919
hoanphuong0808
Member

[Minus]    0    [Plus]
Joined: 25/05/2010 21:06:24
Messages: 16
Offline
[Profile] [PM]
Hix. bọn tớ phải tự tìm hiểu về nó từ a->z. chưa biết gì lại còn lập trình trên nó. Con gái lười hơn con trai mà.
Tớ chạy lại nó lại báo lỗi:
maianh@ubuntu:~$ pico
maianh@ubuntu:~$ gcc -o laptrinhnhom4 laptrinhnhom4.c
maianh@ubuntu:~$ chmod u+x laptrinhnhom4
maianh@ubuntu:~$ ./laptrinhnhom4
./laptrinhnhom4: no file name argument
maianh@ubuntu:~$
Tớ phải làm thế nào
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|