Andi PENG: Chúng tôi gần như qua tất cả các psets. Trong thực tế, chúng tôi qua phần lớn của psets khó khăn nhất. Vì vậy, chúng tôi thực sự chỉ sẽ loại gió qua vài tuần tới. Chúng ta sẽ bắt đầu nói về chúng tôi dự án cuối cùng, các sự kiện sắp tới trong vài tuần tới. Và cuộc sống sẽ là một làn gió. Vì vậy, không quá nhiều ngày nay. Hy vọng rằng, trên thực tế sẽ khoe thông qua chương trình nghị sự cho ngày hôm nay, và sau đó ra khỏi đây với một số thời gian rảnh rỗi. Ngoài ra, tôi muốn xin lỗi cho thiếu kẹo ngày hôm nay. Tôi không biết tại sao. Nhưng trong tuần đầu lên Halloween, tôi sẽ quên kẹo. Vì vậy, tôi thực sự chỉ là một rộng lớn thất vọng cho bạn ngay bây giờ. Bởi vì tôi thật nhớ kẹo cho mỗi lớp duy nhất, nhưng Halloween. Nhưng tuần sau, tôi sẽ mang lại tăng gấp đôi số lượng kẹo tạo nên cho rằng, tất cả cho bạn. Nó sẽ là tuyệt vời. Vì vậy, tôi có một vài thông báo liên quan đến một số kế hoạch. Tôi có một số vấn đề lập kế hoạch. Sau đó, chúng ta sẽ chuyển sang nói về những gì được gọi là chmod. Chúng ta sẽ nói về nhanh chóng TCP / IP HTTP. Và sau đó chúng ta sẽ viết mã của chúng tôi trang web riêng bằng cách sử dụng HTML và CSS. Và sau đó tôi sẽ thực sự rời khỏi thể giống như 20 phút để nói về pset6. Bởi vì pset6 thực sự là rất nhiều thứ mà chúng ta đã thấy trước đây, nhưng tôi muốn làm mới một số những khái niệm cũng như dạy cho một vài chức năng mới. Mát. Vì vậy, trước hết, chào mừng trở lại từ break. Tôi hy vọng bạn nghỉ là thú vị. Đã bạn sẽ làm gì để phá vỡ? Đung Đã đi đến New York. Andi PENG: Bạn đã đi đến New York? Tôi nghĩ rằng một nửa trường của chúng tôi đi đến New York. Đó là tất cả các quyền. Tôi dành phần lớn phá vỡ của tôi ít vận động trên giường Netflixing. Và đó là một thời điểm tốt. Nhưng bây giờ chúng tôi đang trở lại, trở lại trong phiên, trở lại trong swing của sự vật. Chúng tôi có một pset do thứ sáu này vào buổi trưa. Tôi nghĩ rằng bạn đã đã nhặt đố bạn, yeah? Vì vậy, bất cứ ai khác có không có câu đố của họ, hãy đến và nhận được câu đố của bạn từ tôi ở cuối của phần này. Hoặc theo dõi tôi xuống trên khuôn viên trường. Tôi sẽ có nó với tôi ở đâu đó. Dự án cuối cùng của chúng tôi trước khi đề nghị cũng có. Vì vậy, đối với những người trong chúng ta đã không bao giờ thực hiện lớp này trước đây, các capstone của CS50 được rất nhiều lên đến đỉnh điểm trong này dự án lớn mà sinh viên đề xuất. Và trước khi đề nghị, chỉ là một ý tưởng chung về những gì người ta có thể muốn làm cho họ dự án, ý tưởng đó là do thứ hai, Thứ Hai sau vào buổi trưa. Vì vậy khá nhiều, tôi nghĩ David sẽ nói thêm về điều này trong bài giảng nếu anh có chưa. Và có một trang rắn trên website của chúng tôi giải thích tất cả các yêu cầu của dự án. Nhưng về cơ bản, chọn bất kỳ chủ đề mà bạn đã được quan tâm trong suốt thời gian của bạn ở đây tại CS, cho dù đó là chơi game hay thiết kế hoặc video hoặc bất cứ điều gì. Và bạn có thể thực sự loại bây giờ áp dụng một số bài học mà chúng tôi đã học được ở đây trong CS50-- hi, welcome-- để tiến hành khá nhiều một dự án cuối cùng của sự lựa chọn của bạn. Tất cả đó là do thứ hai là chỉ là một lời giới thiệu ngắn gọn qua email với tôi, một câu nhanh chóng, như, hey, Andi, Tôi thực sự quan tâm đến việc thiết kế một trò chơi mà thực hiện điều này cho iOS. Mát. Chỉ cần cho tôi ngắn đầu tiên của bạn ý tưởng cho các dự án cuối cùng của bạn. Và chúng ta sẽ nói qua hay không mà thực sự là một ý tưởng tốt hay không, nếu đó là một ý tưởng khả thi hay không. Nhưng chỉ là tiền đề nghị là do vào thứ hai tới. pset6, web-- đáng yêu của chúng tôi là hoàn toàn sai. Pset7? pset6? Đó là pset6, phải không? pset6, máy chủ web của chúng tôi, là do Thứ sáu vào buổi trưa với cuối ngày. Giờ làm lại bình thường từ thứ Hai đến thứ năm 8:00-11:00 trong tuần này. Tôi nghĩ Commons cho ba đêm tiếp theo. Mát. Trước khi chúng tôi đã vào vật chất, không ai có bất kỳ câu hỏi, câu chuyện cười, những câu chuyện? Bạn đã làm gì cho nghỉ mùa thu? Đung Những gì tôi làm gì? Andi PENG: Already đó là lứa tuổi trước đây thực sự. Christabel đã đi đến New York. Tôi ở đây và Netflixed. Đung Oh, yeah Tôi đã ở đây. Andi Peng: Oh, OK. Đung Tôi không nhớ những gì cụ thể. Andi PENG: Đó là OK. Đung Netflixing lẽ. Andi PENG: Netflixing. Vâng, đó là một thời điểm tốt. ĐƯỢC. Được rồi. Bất kỳ câu hỏi trước chúng tôi nhảy vào vật chất? Ngoài ra, chúng ta sẽ cố gắng để tốc độ thông qua phần ngày hôm nay, không quá nhiều để trang trải. Và hy vọng, chúng ta sẽ nhận được ra đây một chút sớm. Xin lỗi vì không kẹo, cũng. Tôi là một sự thất vọng, đặc biệt là trong Halloween. Được rồi. Mát. Vì vậy, chúng ta sẽ bắt đầu nói về một đối số dòng lệnh gọi là chmod. chmod, tất cả nó là chỉ là một hệ thống Unix gọi thực hiện từ dòng lệnh để thay đổi quyền truy cập tập tin. Vì vậy, ví dụ, chúng tôi đã tất cả gặp phải một trang như thế này có lẽ đôi khi trong Tuổi thọ của chúng ta là một internet người sử dụng, nơi mà máy chủ web của chúng tôi có cho chúng ta những lỗi của Forbidden. Bạn không có quyền truy cập, yadda, yadda, yadda, trên máy chủ này. Tất cả những gì thực sự có nghĩa là là các quyền mà đã được gắn vào bất cứ điều gì Trang web bạn đang cố gắng truy cập không mở cửa cho bạn. Vì vậy khá nhiều, chmod là cách thức mà chúng tôi có thể sửa đổi những điều khoản hệ thống để cung cấp cho tất cả mọi người, những người sử dụng, nhóm, hay thế giới, hoặc bất kỳ sự kết hợp của những người truy cập để các tập tin nhất định, thư mục, bất cứ điều gì thực sự, bất kỳ loại hệ thống trên một hệ điều hành. Vì vậy, nếu có của kẻ có máy tính nếu bạn cảm thấy như sau đây cùng với tôi hôm nay, hoàn toàn cảm thấy tự do chỉ cần gõ thứ trong. Nếu không, bạn chỉ có thể đi chơi. Vì vậy, tôi sẽ thực sự kéo lên ga của tôi ngay bây giờ. Vì vậy, các lệnh để chạy chmod, hoặc ít nhất là chỉ để liệt kê các quyền truy cập của bạn thư mục tập tin, chỉ là ls-l. Như bạn có thể thấy, một loạt các thứ bật lên hầu hết trong số đó là quan trọng đối với chúng tôi trên phía bên tay trái ở đây. Các bạn nhìn thấy một bó của rs, ws, 1 /. Yeah. Đó là những chất chỉ tất cả các quyền tập tin để giải thích những gì các thư mục nhất định và các tập tin trong hệ thống của bạn có. Vì vậy, chúng ta hãy quay trở lại điểm quyền lực ở đây. Vì vậy, ngoài các tên tập tin như các bạn có thể thấy bên phải, chúng tôi đang tìm kiếm để xem cơ bản chỉ cột bên trái. Vì vậy, ngoài việc chỉ tên tập tin, chúng tôi có thể thấy các quyền của tập tin, họ nhóm chủ sở hữu, tên nhóm, ngày rằng tập tin lần cuối sửa đổi, vân vân. Bạn có thể nhìn thấy rất nhiều những thứ sử dụng chmod. Vì vậy, cách mà chúng ta đọc chmod là các chữ cái đầu tiên chúng tôi khá nhiều bỏ qua về quyền đọc. Bức thư đầu tiên chỉ cho chúng ta biết những gì loại hệ thống chúng tôi đang truy cập. d, trong trường hợp này, là một thư mục hoặc thư mục. Vì vậy, chúng ta biết rằng hiện tại không gian làm việc của tôi Phần bảy là một thư mục. Và sau đó bạn nhìn thấy ba Tam hoàng, thực chất chỉ ba bộ ba nhân vật. Và bạn có thể nghĩ đến mỗi khi một chút. Vì vậy, bạn chỉ có ba bộ ba bit, chín bit trong tổng số. Bạn đối xử với họ trong nhóm của ba. Vì vậy, nhóm đầu tiên của ba là luôn luôn cho phép người dùng của bạn. Nhóm thứ hai của bạn là ba luôn luôn cho phép nhóm của bạn. Và tập thứ ba của ba là luôn luôn như thế giới, ở khắp mọi nơi cho phép. Vì vậy, tôi đoán dễ dàng Câu hỏi đặt ra là là những gì sự khác biệt giữa người dùng và nhóm. Sự khác biệt chính giữa người dùng và nhóm là một người sử dụng chỉ là bạn thân truy cập vào bất cứ điều gì nó là ngay bây giờ. Một nhóm có thể được nếu bạn có nhiều người sử dụng trên một máy tính, ví dụ. Tất cả trong số họ có thể được coi là một nhóm. Và sau đó là thế giới chỉ thế giới, tất cả mọi người. Vì vậy, chúng ta có thể xem cách chúng tôi có thể chỉnh sửa những thành quyền hạn khác nhau. Vì vậy khá nhiều, chúng tôi sẽ vẫn tập trung về phía bên trái, nơi cho thư mục CS50 chúng ta thấy drwx, nơi r chỉ có nghĩa là nó có thể đọc được. Các w chỉ có nghĩa là nó có thể ghi. Và sau đó x chỉ có nghĩa là nó thực thi. Bạn nghĩ rằng nó loại của không có ý nghĩa. Nó phải là e. Nhưng x thực sự loại làm việc tốt hơn một chút, bởi vì bạn có thể nhớ nó tốt hơn. Vì vậy, ba loại điều bạn có thể làm, bạn có thể đọc một tập tin, bạn có thể có quyền viết tập tin, hoặc bạn có thể có sự cho phép để thực thi một tập tin. Và do đó, cách mà chúng tôi thực sự đại diện cho những người trong bit là những con số 4, 2, và 1. Vì vậy, bất cứ điều gì đó là có thể đọc được là đại diện bởi số lượng 4. Bất cứ điều gì đó là có thể ghi được biểu diễn bởi 2. Và bất cứ điều gì đó là thực thi như được đại diện bởi 1. Vì vậy, trong ý nghĩa này, chúng ta cũng có thể đại diện cho các numbers-- hi, chào mừng, theo một cách khác nhau. Lấy làm tiếc. Trước khi tất cả mọi người, tôi sẽ xin lỗi thay mặt cho tất cả mọi người vào lớp bây giờ. Tôi quên kẹo ngày hôm nay. Tôi xin lỗi tôi là một thất bại tuần này của Halloween. Tôi sẽ mang lại gấp đôi số lượng kẹo thời gian tới để bù đắp cho nó. Nhưng dù sao, xin lỗi về con trai mà, xin lỗi. Vì vậy, cách mà chúng tôi thực sự có thể nhập trên lệnh của chúng ta tranh luận là chúng tôi có thể làm phép nhóm slash chmod, nơi mà nhóm chỉ là bất cứ điều gì nhóm chúng tôi đang cố gắng thay đổi. Và quyền hạn bất cứ điều gì chúng ta muốn thêm vào nó. Vì vậy, ví dụ, cộng thêm điều khoản, và trừ mất đi quyền. Và các loại nhóm chúng tôi có một của chúng tôi cho tất cả, u cho người dùng, g cho các nhóm, hoặc o cho người khác. Đó là một chút trừu tượng ngay bây giờ. Nhưng chúng ta sẽ đi qua một vài ví dụ chỉ để chứng minh thực tế nhanh chóng này. Mọi người đều tốt về điều này slide, vì vậy tôi có thể di chuyển trên? Mát. Vì vậy, ví dụ, rwx. Trước khi chúng tôi nói về những gì nó đại diện, đầu tiên của tất cả những gì không rwx nghĩa là gì? Nếu bạn thấy rằng điều này nhất định file này có quyền truy cập của rwx, thế có nghĩa là các người có thể có thể làm gì? Đung đọc, viết và thực hiện. Andi PENG: Yeah, chính xác. Bạn có thể đọc ghi và thực hiện. Bởi vì tất cả ba trong số những nhân vật có mặt. Vì vậy, nếu chúng ta đi tiếp và nói chuyện về điều này trong các điều khoản của các bit, các rwx cũng có thể được biểu diễn như là 700. Bởi vì khi bạn có thể thấy trong bất kỳ loại tập tin thư mục cho phép, có ba hội Tam hoàng. Trong trường hợp này, chỉ lần đầu bộ ba có bất cứ điều gì ở đó. Vì vậy, trong trường hợp này, r là 4, w là 2, và x là 1. Nếu bạn thêm những với nhau, đó là 7. Và vì vậy nếu bạn chuyển đổi nó thành dạng nhị phân, đó là 700. Vì 7 là bộ ba đầu tiên. 0, không có gì hiện nay là trong bộ ba thứ hai. Và sau đó không có gì là hiện tại bộ ba thứ ba, vì vậy đó là 0 khác. Vì vậy, trong ý nghĩa đó, một loạt các hội Tam hoàng có thể được biểu diễn chỉ bằng bit, chỉ trong hệ nhị phân là tốt. Vì vậy, 700 có nghĩa là chính xác những điều tương tự như rwx ------ trong điều kiện cho phép. Mọi người đều rõ ràng về điều đó? Mát. Và như vậy chmod 111 sẽ cung cấp cho mà cho phép để các tập tin? Cung cấp cho các bạn một vài giây để chuyển đổi này. Hãy nhớ rằng, người đầu tiên bộ ba là cho người sử dụng. Các bộ ba thứ hai là cho nhóm. Và bộ ba thứ ba là cho mọi người. Và như vậy chmod 111 sẽ cung cấp mà loại quyền và cho ai? Mất một vài giây để nghĩ về nó và quay trở lại. Yeah. Đung Vì vậy, tất cả mọi người có thể thực hiện nó. Andi PENG: Yup, chính xác. Đung Nhưng không ai có thể đọc hoặc viết. Andi PENG: Và cảm thấy tự do để giải thích cho tất cả mọi người làm thế nào bạn đi đến kết luận rằng. Đung Vâng, đối với những người sử dụng, nhóm, và trên thế giới, đó là tất cả 1, đó là mã cho thực thi. Andi PENG: Yeah, chính xác. Vì vậy, 1, trong trường hợp này, chúng ta đều biết là rằng đó là mã thực thi. Bởi vì đọc sách là 4. Viết là 2. Và thực thi là 1. Vậy là cả ba Tam hoàng là 1, mà có nghĩa là cho thế giới, cho người sử dụng, và nhóm, họ là tất cả các thực thi. Mọi người đều tốt với điều đó? ĐƯỢC. Và do đó, cách thứ hai rằng chúng ta có thể thực sự viết này cũng là bạn chỉ có thể làm chmod một cộng với x. một có nghĩa là tất cả hoặc tất cả mọi người. Các cộng đồng nghĩa với việc cho phép để. Và sau đó x có nghĩa là thực thi. Vì vậy, có hai lệnh thực sự giống hệt nhau. Vì vậy, nếu bạn muốn chạy này trong terminal của bạn, bạn làm chmod 111, tên của thư mục hoặc tập tin của bạn. Hoặc bạn có thể làm một chmod cộng với x, tên của tập tin thư mục của bạn. Cùng một điều, chỉ cần một cách dễ dàng hơn, có lẽ, đối với một số đại diện hoặc thay đổi quyền tập tin. Mỗi một OK với chmod trước khi chúng tôi di chuyển trên? Mát. Vì vậy, bây giờ chúng ta sẽ đi vào một vài slide của khái niệm rất trừu tượng rằng tôi là khá nhiều sẽ khoe qua. Và nó hoàn toàn OK nếu bạn không hiểu tất cả mọi thứ. Ngay cả bây giờ, tôi vẫn không thực sự hiểu tất cả mọi thứ hoàn toàn. Nhưng nó nhiều hơn nhận sự hiểu biết về mức độ đầu làm thế nào một số trong những điều làm việc. Vì vậy, chúng ta sẽ nói chuyện nhanh chóng về TCP / IP, mà chỉ là Transmission Control Nghị định thư giảm Internet Protocol. Nhớ lại từ bài giảng, David, ông đã dạy cho bạn các ví dụ mà ông muốn vượt qua các ghi chú trong một phong bì lên để thích hàng đầu của các giảng đường? Vì vậy, trong giảng đường trường luật David đã chứng minh cơ bản TCP / IP làm việc trong ý nghĩa là tất cả nó là là một phương tiện đảm bảo rằng dữ liệu đã được chuyển qua một máy chủ hoặc trên internet. Vì vậy, trong ví dụ của phong bì và tin nhắn, người sử dụng cuối cùng có thể thấy rằng, oh, tôi cần thiết để nhận được bốn gói thông tin. Nhưng tôi thực sự chỉ nhận được ba. Điều đó có nghĩa là tôi phải mất một. Và một trong những không được giao. Và do đó, TCP / IP trên internet, thông qua máy tính của bạn và máy chủ, làm chính xác những điều tương tự. Tất cả nó là chỉ định một khuôn khổ trong đó một dữ liệu bị mất các gói dữ liệu có thể được bực bội và nhận. Giống như trên internet khi bạn đang cố gắng để truy cập các tập tin trực tuyến hoặc gửi file cho bạn bè của bạn hay nhìn vào web trình duyệt, hàng ngàn và hàng ngàn của tỷ tỷ các byte thông tin được truyền tải trên mỗi mili giây. Và nó thực sự, thực sự khó hiểu. Và nó thực sự khó để thực sự biết những gì đang được gửi đi và những gì không được gửi đi. Và do đó, TCP / IP chỉ định một khuôn khổ cố kết trong đó web của bạn trình duyệt và máy chủ của bạn loại có thể giao tiếp với nhau, chỉ đảm bảo rằng các gói tin được tất cả ở đây và không có gì bị mất tích và tất cả các dữ liệu mà bạn yêu cầu được thực sự hiển thị đúng. Mọi người đều OK vào đó chỉ cần rất mức cao ngắn gọn hiểu? Mát. Vì vậy, sau đó chúng ta sẽ di chuyển vào nói về HTTP, mà chỉ là Hypertext Transfer Protocol. HTTP, tất cả nó là bất cứ điều gì là bất kỳ trang hoặc tập tin được truy cập vào trang web của bạn, các máy chủ trả về một HTTP mã trạng thái trong phản ứng với yêu cầu đảm bảo rằng hoặc là, oh, yêu cầu này đã đi qua. Và mọi thứ đều hiển thị đầy đủ. Hoặc, oh, không, 404. Có gì đó không đúng. Oh, tôi không thể hiển thị. Tất cả đó là là bất cứ điều gì bạn đang cố gắng để truy cập, sử dụng như là người dùng đang cố gắng để truy cập, trên internet-- chỉ đảm bảo mà bạn có có thành công truy cập bất cứ điều gì nó là hay không truy cập thành công bất cứ thứ gì. Và vì vậy trạng thái HTTP mã chỉ cung cấp cho bạn một phương tiện của việc có thể biết liệu hoặc nó không phải là thành công hay không. Vì vậy, ví dụ, một yêu cầu ví dụ. Bạn có thể thấy ở đây đó là thường thường có bốn dòng. Chúng tôi có một HTTP GET 1.1, mà chỉ là URL yêu cầu phương pháp, các giao thức phiên bản, tên trường, và các giá trị trường. Vì vậy, không cần thiết phải hoàn toàn ghi nhớ bất cứ điều gì ở đây. Chỉ cần loại đã đọc mình với những cách nhìn. Trong ví dụ này, các yêu cầu phương pháp URL chỉ là bất cứ điều gì theo yêu cầu bạn đang gửi các máy chủ. Giống như, hey, máy chủ, tôi thực sự muốn truy cập yadda, yadda, yadda, trang HTTP. Các phiên bản giao thức chỉ là bất cứ điều gì phiên bản máy chủ của bạn hoặc máy chủ của bạn được sử dụng để truy cập thông tin. Tên trường là các trang web hoặc các URL mà bạn đang cố gắng để truy cập, trong trường hợp này, www.apple.com. Và giá trị trường là chỉ thường đặt tên, giá trị. Và nó có thể là bất kỳ loại kết hợp các chữ hoặc số hay bất cứ điều gì. Vì vậy, một yêu cầu điển hình, vì vậy những gì máy tính của bạn thực sự gửi đến máy chủ mà nói, hey, bạn biết những gì tôi cần điều này hiển thị, đó là các loại yêu cầu rằng họ thực sự nhận được. Một đáp ứng ví dụ về những gì máy chủ sẽ gửi lại cho bạn sẽ được khá nhiều điều tương tự, ngoại trừ với một mã trạng thái ở đầu trang. Vì vậy, 200, 2 0 0 luôn luôn là các mã trạng thái cho OK. Giống như, OK, yêu cầu này đã đi qua. Bạn đã có thể truy cập tất cả mọi thứ một cách chính xác. Cuộc sống là tốt. Cuộc sống là tốt. Tất cả mọi thứ là hoàn toàn tốt. Và vì vậy đây chỉ nói cho trình duyệt của bạn và máy chủ của bạn, hey, mọi thứ đều tốt. Tôi đã nhận tất cả các thông tin cần thiết. Mát. Nhưng vấn đề là đôi khi vấn đề trở lên khi bạn have-- kéo tôi nghĩ Tôi đã nói chuyện về các bản sao. Bạn có phản ứng không tốt. Vì vậy, ví dụ, 404 là Không tìm thấy trang. Đôi khi bạn có thể truy cập Forbidden. Bạn có nhiều khác mã trạng thái mà tôi chắc chắn rằng bạn đã nhìn thấy tất cả khi bạn đang cố gắng để làm nghiên cứu trên internet. Và trình duyệt của bạn mang đến cho bạn các, không, không thể truy cập. Và bạn đang như, tốt, crap. Vì vậy, chỉ cần khá nhiều, có một số mã trạng khá phổ biến. Có lẽ quen với những người thân mà người đang có. Người hài hước nhất mà Tôi nghĩ rằng tôi đã từng nghe of-- nếu bạn xảy ra để nhìn lên tất cả chúng trực tuyến, đối với một số lý do có thực sự là một mã trạng thái thực gọi 418 Tôi là một ấm trà. Tôi googled nơi nguồn gốc của điều này là từ. Và dường như một April Fools ' Ngày một vài thập kỷ trước đây, ai đó nghĩ rằng nó sẽ được vui nhộn để tạo ra một mã trạng thái mới được gọi là 418 Tôi là một ấm trà. Hợp pháp, những tên này đang gọi tôi là một ấm trà. Tôi quên những gì trang bạn phải đi để thực sự làm cho màn hình này. Nhưng rõ ràng, bạn có thể thực sự có được một mã trạng thái của tôi một ấm trà bằng cách nào đó qua làm một cái gì đó. Vì vậy, có hàng trăm và hàng trăm mã trạng thái. Một số trong số họ làm cho hơn ý thức hơn những người khác. Nhưng khá nhiều chỉ đọc mình với những người phổ biến nhất. Cơ thể thực thể yêu cầu là ngắn và mập mạp, rõ ràng. Vì vậy, đôi khi có nhiều lỗi đáng sợ hơn tôi là một ấm trà. Nhưng đây là một điều mà tôi đoán bạn loại hy vọng để đạt. Nhưng tôi không nghĩ rằng bạn sẽ. Mọi người đều tốt trên chỉ là trạng thái mã số, yêu cầu, quy trình, làm bảo thông tin được phân phối đúng cách? Vì vậy, bây giờ chúng ta sẽ chuyển đổi thành một phần thú vị của phần ngày hôm nay, nơi chúng ta nói một chút về HTML. HTML, tất cả nó là HyperText Ngôn ngữ đánh dấu. Nó chỉ là ngôn ngữ chuẩn bạn sử dụng để tạo ra tất cả các web trang trên internet. Vì vậy, bất kỳ trang web, những gì trang web yêu thích của bạn? Trang web yêu thích của bạn là gì? Đung [không nghe được]. Andi PENG: Xin lỗi? Đung Tumblr. Andi PENG: Tumblr. Vì vậy, Tumblr được viết bằng HTML. Và như vậy chúng ta sẽ thực sự đi qua và chơi xung quanh với một số trong những điều sau này. Khá nhiều bạn cần phải học, phải biết, để viết HTML, bạn có thể có lẽ Google chỉ trên internet. HTML, nó không phải là một chương trình như C nơi bạn có thể tạo ra các biến và làm những thứ mát mẻ với nó. Đó là nhiều hơn chỉ, oh, đây là cách tôi muốn những thứ xuất hiện trên trang web của tôi. Và tôi chỉ cần đi để đặt nó trong. Và nó sẽ để định dạng. Vì vậy, HTML, trong một nghĩa nào đó, nó chỉ giống như một định dạng hay mẫu ngôn ngữ. Nó dễ dàng hơn rất nhiều. Nó dễ dàng hơn rất nhiều để tìm hiểu, dễ dàng hơn nhiều để viết trong hơn các chương trình điển hình của bạn ngôn ngữ, rất dễ dàng, rất dễ sử dụng có thể truy cập và thân thiện. Vì vậy, chúng tôi đang thực sự đi chơi xung quanh, viết các trang của chúng ta ngày hôm nay. Nhưng trước khi chúng ta bắt đầu, tôi chỉ muốn đi qua một số thực hành ngắn nhất. Bởi vì HTML là như vậy một cách dễ dàng ngôn ngữ và bởi vì ngay cả nếu bạn làm một vài điều sai trái, đôi khi nó có thể không để ý, chúng tôi muốn chắc chắn rằng chúng tôi thực sự tôn trọng những thực tiễn tốt nhất của chúng tôi để đảm bảo rằng những điều mà có thể đi xung quanh, nhưng không phải lúc nào sẽ không đi ngay chắc chắn rằng họ đang giảm thiểu. Vì vậy khá nhiều, chắc chắn đóng tất cả các thẻ của bạn của bạn khi bạn đang viết bằng HTML. Nếu bạn đang mở một cơ thể, chắc chắn rằng bạn đang đóng nó với một cơ thể ở đâu đó. Bạn muốn chắc chắn rằng bạn Trang web xác nhận bằng cách sử dụng những gì được gọi là W3 Validator. Bạn chỉ có thể Google rằng trực tuyến, và có một liên kết đến nó. Và sau đó bạn muốn HTML riêng biệt, mà là ngôn ngữ đánh dấu của bạn từ phong cách của bạn, đó là ngôn ngữ CSS rằng David chứng minh rằng chúng tôi cũng đi chơi một chút với bài giảng. Mát. Vì vậy, bất cứ lúc nào bạn muốn chạy HTML trên các thiết bị CS50, chúng ta sẽ chạy một chương trình gọi là apache, mà tất cả nó chỉ là một trong xây dựng máy chủ web mà mọi người trong CS50 có quyền truy cập vào. Chúng tôi gọi nó là apache50 chỉ vì chúng tôi muốn gọi tất cả mọi thứ 50 trong CS50. Vì vậy, cách mà bạn bắt đầu các web CS50 máy chủ là bằng cách gõ vào lệnh của bạn dòng apache50 bắt đầu chấm. Và nếu bạn muốn kết thúc nó ở bất kỳ thời gian, bạn apache50 kết thúc không có dấu chấm. Và bạn chỉ cần nhấn Enter. Và nó phải được nhóm lên đây sớm. Yup. Vì vậy, tôi chỉ cần đi để nhanh chóng đi qua một ví dụ về một trang web thực sự ngắn gọn. Và chúng ta sẽ phải chi tiêu như 10, 15 phút chơi xung quanh viết các trang web của riêng của chúng tôi. ĐƯỢC. Vì vậy, ở đây IDE-- có thể mọi người thấy điều đó không? Không hẳn. Ở đây, tôi sẽ phóng to. Tôi vừa nhận được mẫu này ngắn gọn ở đây không có gì thực sự ở trong đó. Chúng tôi chỉ cần đi để nhanh chóng viết một chương trình HTML trong đó chúng ta chỉ chào thế giới. Vì vậy, điều tương tự như trong C, bây giờ chúng tôi chỉ cần đi để làm điều đó trong HTML. Có ai muốn thực sự chỉ cố gắng đem lại cho tôi những điều đầu tiên bạn sẽ phải đặt trong một tài liệu HTML? Yeah. Đung Các dấu ngoặc, các [không nghe được]. Andi PENG: Yep. Vì vậy, đó là một cái gì đó rất độc đáo để HTML mà chúng ta thường truyền thống không gặp chỉ huy khác ngôn ngữ lập trình cấp dòng là chúng ta thực sự để xác định các loại tập tin rằng điều này là có được ở đầu mã của chúng tôi. Vì vậy, trong instance-- này tôi nghĩ đó là các lệnh đúng, phải không? Yup. Ở phía trên, bạn chỉ muốn bao gồm nổ DOCTYPE html trong ngoặc chỉ để nói cho máy tính của bạn, hey, nhìn ra ngoài. Và tài liệu HTML đang đến. Và sau đó làm thế nào chúng ta muốn để bắt đầu tập tin của chúng tôi? Nếu chúng ta chỉ muốn nói xin chào, có một trang web đó nói xin chào với thế giới, làm thế nào để chúng ta đi về xây dựng này? Trên thực tế, chúng ta hãy quay về với Google. Và chúng tôi thực sự có thể làm được điều này. Yup. Hiện chúng tôi đi. Vì vậy, HTML. Như bạn có thể thấy, trình duyệt của tôi là thực sự tự động tạo kiểu tóc này cho tôi. Cùng một điều là trong C, khi bạn tạo ra một ngoặc móc mở, Trình duyệt của bạn tự động cho biết thêm trong một ngoặc móc gần. May mắn thay, IDE của chúng tôi rất thích làm điều này cho chúng ta là tốt. Vì vậy, bây giờ chúng ta có thể loại nhập sự khởi đầu của một tag, và nó sẽ luôn luôn nói với chúng tôi nhớ đánh cuối của thẻ. Tôi nghĩ rằng điều này cần phải được viết hoa. Và sau đó chúng tôi muốn thêm vào, luôn luôn, một cái đầu trong đó là tiêu đề. Chúng tôi chỉ muốn để có thể gọi hello này, và sau đó cơ thể. Và có bạn đi. Đó thực sự là tài liệu HTML của chúng tôi. Vì vậy, cách mà bất kỳ tài liệu HTML luôn theo kiểu in-- cùng một điều với int void main. Bạn luôn muốn có HTML một thẻ mở và đóng ở trên cùng và dưới cùng của mã của bạn. Bạn muốn có một đầu bên trong trong đó có các tiêu đề, chỉ cần bất cứ điều gì sẽ hiển thị các tab của web của bạn trang, và sau đó là một cơ thể bên trong đó sẽ thực sự hiển thị các nội dung của bất cứ điều gì bạn muốn làm. Vì vậy, nếu bạn muốn thực sự chạy này, tôi sẽ thu nhỏ trở lại. Bạn thực sự có thể bắt đầu apache50 bắt đầu chấm. Mát. Và như vậy, bạn có thể thấy, bây giờ liên kết này đã hiện lên. Nó nói rằng trang web của bạn bây giờ là có sẵn ở một số liên kết dưới đây. Vì vậy, tất cả các IDE của chúng tôi có done-- không IDE, sorry-- yeah, IDE của chúng tôi đã làm là tạo ra một web link trên đó tất cả các trang web của chúng tôi có thể được truy cập trên máy chủ. Vì vậy, chúng ta hãy xem đây. Hãy click vào đây, đi đến hello.html. Và bạn thấy một rất đơn giản Trang web cho hello thế giới. ĐƯỢC. Chúng tôi đang thực sự sẽ chỉ có everyone-- yeah, có chuyện gì thế? KHÁN GIẢ: Tôi có một câu hỏi cơ bản. Andi PENG: Yup. Đung Làm thế nào để tiết kiệm tập tin của bạn như một HTML? Andi PENG: Yeah. Vì vậy, nếu tôi là để tạo ra một tập tin mới, nếu tôi làm New File, Untittle, nếu tôi làm, section.html, bùng nổ, đó là tất cả tôi phải làm. Đung [Không nghe thấy]? Andi PENG: No. Đung [không nghe được]. Andi PENG: No. Đung [không nghe được]. Andi PENG: Yeah. Khá nhiều, phần mở rộng trên các tập tin đó là bên trong IDE của bạn, mà nói với các máy tính, mà cho trình duyệt, hey, nhìn ra ngoài. Điều này là có thể được mã được viết bằng ngôn ngữ này. Vì vậy, ví dụ, trong Microsoft Word, những gì làm tất cả các tài liệu Word kết thúc với, những gì mở rộng? .doc hay .docx, phải không? Tất cả điều đó không được quy định cụ thể để hệ điều hành của bạn, hey, bạn đã có một tài liệu Word sắp tới. Mở nó bằng Word. Cùng một điều với các file PDF. Nó biết, oh, tôi cần để mở tập tin này với Adobe Reader hoặc Adobe Acrobat. Và do đó, mở rộng hoạt động của cùng một cách như trong máy tính của bạn. Nếu bạn chỉ định trang mã của bạn được đặt tên là HTML, sau đó nó biết, oh, bạn đã có mã HTML. Tôi sẽ đối xử với nó như là mã html. Vì vậy, đó là siêu thông minh trong ý nghĩa đó. Vì vậy, tất cả mọi người, chúng ta hãy giống như 10 phút và chỉ tạo ra các trang web riêng của chúng tôi. Hãy thêm vào những điều đáng yêu. Cảm thấy tự do để nói bất cứ điều gì bạn muốn. Tôi chỉ muốn chắc chắn rằng các máy chủ của tất cả mọi người đang chạy một cách chính xác trước khi chúng ta giải phóng bạn vào pset. Bởi vì nếu máy chủ của bạn không chạy cho pset, mà sẽ được thực sự, thực sự xấu. Tôi chỉ cần đi để nổi xung quanh và xem những gì mọi người đang làm việc trên. Thế nào rồi? Đung Tôi chỉ bật máy tính của tôi. Andi PENG: Đó là OK. Đung [không nghe được]. Andi PENG: Chỉ cần IDE của bạn. Yeah. Đung [không nghe được]. Andi PENG: Đó là OK. Đung [không nghe được]. Andi PENG: Hoàn toàn tốt. Là tất cả mọi người truy cập máy chủ OK web của họ? Được apache50 chạy OK? Tôi nghĩ rằng trong một số các phần khác, chúng tôi có vấn đề với những người không có thể truy cập máy chủ. Yeah. Vì vậy, bạn chỉ cần chạy apache50 không gian bắt đầu khoảng thời gian không gian. Đung [không nghe được]. Andi PENG: Yup. Tốt? Đung [không nghe được]. Andi Peng: Oh, OK. Vì vậy, bạn đang nghĩ để có một không gian. Vì vậy apache50-- Đung tôi đã làm. Andi Peng: không gian --start. Đung Oh, không gian dot. Andi PENG: Yup, không gian dot. Của bạn đó. Vì vậy, sau đó nếu bạn có một trang HTML được tạo ra, sau đó bạn chỉ có thể đi trực tiếp để liên kết mà nó chỉ. Và bạn sẽ có thể truy cập nó. Tất cả mọi người đã có thể truy cập vào các trang web của họ OK? Đung [không nghe được]. Andi Peng: Oh, đó là OK. Đung [không nghe được]. Andi PENG: Yeah. Tôi nghĩ rằng bạn thực sự có thể mở nó trong trình duyệt, trình duyệt của bạn và không chỉ trình duyệt IDE của bạn. Vâng, tôi nghĩ rằng nếu bạn sao chép và dán nó. Đung Và sau đó làm thế nào để chúng ta tắt nó đi? [Không nghe thấy] Andi PENG: Yeah, bạn làm apache50 dừng lại không có thời gian. Yup. Đung [không nghe được]. Andi PENG: Không có thời gian. Yeah. Hiện chúng tôi đi. Yup. Chúng tôi đang tạo ra các trang web của riêng của chúng tôi. Đung Oh, mát mẻ. Andi PENG: Yeah. Đung Tôi có một câu hỏi. Vì vậy, apache 50-- Andi PENG: 50, yeah. Đung [không nghe được]. Andi PENG: Cái gì? Điều đó thật lạ. Thấy, đó là loại vấn đề mà đã xảy ra trước. ĐƯỢC. Xem tôi sau khi phần. Bởi vì chúng tôi đang gặp một số các vấn đề với máy chủ. Và bạn muốn chắc chắc chắn rằng máy chủ của bạn là chạy trước khi bắt đầu pset. Bởi vì bạn sẽ cần đến nó. Yeah. Có bất cứ ai khác mà không được có thể nhận được máy chủ của họ để bắt đầu? Đối với những người bạn của những người muốn thêm phong cách thêm vào các trang web của bạn, chúng tôi thực sự có thể làm những gì David đã làm trong bài giảng là tốt, đó là tạo ra một phong cách thêm tấm, đó là một dấu chấm CSS, Cascading Style Sheet và thực sự chỉ cần thêm nó vào. Vì vậy, ví dụ, tôi vừa tạo khá nhiều gần như cùng một chính xác David đã làm trong bài giảng. Bạn có thể khá nhiều chỉ làm cơ thể. Bạn có những gì được gọi là các thẻ trong đó bạn có thể áp dụng cho bất cứ mục IDE bạn muốn trong bạn thực tế để trang HTML. Vì vậy, cơ thể của trang, bạn có thể làm trung tâm class văn bản. Và sau đó tôi sẽ sáng tạo một thẻ gọi là hàng đầu bên trong trong đó tôi muốn những điều cần xảy ra, chỉ định một kích thước điểm ảnh lớn cho phông chữ. Tôi muốn các font được in đậm. Và tôi muốn màu để có màu xanh, chỉ tùy ý các giá trị mà tôi đã quyết định để lựa chọn. Tôi có thể tạo ra một thẻ gọi là trung. Cỡ chữ, làm cho nó nhỏ hơn một chút. Và sau đó tôi có thể tạo ra một thẻ khác gọi là đáy, nơi tôi muốn kích thước phông chữ là nhỏ hơn vẫn còn. Và như vậy khá nhiều này chỉ là ví dụ mã nguồn hoặc nguồn style sheets rằng nó rất dễ dàng chỉ cần Google. Nếu bạn nói, oh, tôi muốn font của tôi được in nghiêng và màu xanh đậm, bạn có thể có lẽ Google, và sau đó nó sẽ cho bạn biết các thẻ hoặc ID thích hợp để tạo ra. Và do đó, cách mà bạn sẽ thực sự loại này có trong một tài liệu HTML hoặc sử dụng nó là tất cả các bạn có làm ở đây là ở phần đầu thêm một liên kết đến các style sheet. Vì vậy, bạn chỉ có thể liên kết equals href bất cứ tên các tấm phong cách của bạn là. Và sau đó mối quan hệ là một style sheet. Vì vậy, trong bất kỳ tài liệu HTML, miễn như bạn bao gồm các tấm CSS dot này, bạn sẽ có thể truy cập và có các tính chất đó. Vì vậy, ví dụ, ở đây tôi đã chỉ tạo ra một trang web ví dụ. Điều này được chào đón để phần CS50 Thứ Ba 2:00-03:30 với tôi. Và sau đó tôi đã thêm một hình ảnh đáng yêu mà chúng tôi có khả năng sẽ có thể nhìn thấy. Vì vậy, nếu bạn có một cái nhìn ở đây, nếu bạn đi đến style.html, chúng tôi tạo ra một trang web với mèo con. Bởi vì con mèo con là tuyệt vời. Vì vậy, thêm một hình ảnh chỉ được liên kết img SRC. Khá nhiều, nếu có bất kỳ loại tính năng bạn muốn thêm vào của bạn website-- vì vậy hãy nói, bạn muốn thêm một menu hoặc một thanh tìm kiếm hoặc như một image-- chỉ Google làm thế nào để làm điều đó. Và bạn chỉ tiếng tom ở định dạng đó. Chỉ và bạn có thể khá nhiều chỉ cần thêm nó vào. Nó thực sự, thực sự dễ dàng. Chúng tôi đang tạo riêng của chúng tôi các trang web ngay bây giờ. Nếu bạn muốn-- Đung [Không nghe thấy] Andi PENG: Xin lỗi? Đung [không nghe được]. Andi Peng: Oh, các div chỉ là một bộ phận nói với tôi rằng, oh, tôi có một phần nhất định gọi là trung mà tôi đang làm đơn tag CSS của tôi, và sau đó bộ phận khác của tôi với đáy. Đó là tất cả nó nói cho bạn. Bởi vì nó là tốt đẹp để giữ thứ gọn gàng theo thứ tự, do đó, các chương trình biết chính xác làm thế nào để chạy. Và nghĩ rằng tôi có thể sao chép và dán này vào trình duyệt thực tế của tôi là tốt. Nó nên được sử dụng tốt. Yeah. Yay. Vì vậy, nếu tất cả mọi người muốn chỉ cố gắng tạo ra một trang web, chúng tôi sẽ mất thêm 2-3 phút. Tôi chỉ muốn chắc chắn các máy chủ của tất cả mọi người đang chạy và mọi người đều có một ý tưởng làm thế nào để làm điều đó. Nếu các bạn muốn đưa ra các máy tính của bạn. Vẫn không hoạt động? Đung Tôi chỉ là [không nghe được]. Andi PENG: Có thể thử cập nhật 50 là tốt. Yeah. Đung [không nghe được]. Andi PENG: Yeah. Vì vậy, cách mà bạn bắt đầu một mới máy chủ web trên IDE chỉ là làm apache50 không gian không gian bắt đầu chấm. Tôi chỉ muốn chắc chắn các máy chủ của tất cả mọi người đang chạy OK. Đung đây, trên các thiết bị đầu cuối? Andi PENG: Yeah. Đung [không nghe được]. Andi PENG: Apache. Trên thực tế, tôi nghĩ rằng bạn đang chạy cái gì đã có. Vâng, bạn đang thực sự chạy một máy chủ khác nhau. Vâng, bạn tốt. Chừng đó là làm việc, bạn là OK. Đung OK. Andi PENG: Có hai cách để chạy các máy chủ. Vì vậy, miễn là một trong những cách đang làm việc, đó là tất cả các quyền. Chúng tôi sẽ lấy một phút chỉ để loại kết thúc các lo mọi việc của bất cứ điều gì Trang web các bạn muốn làm. Được tất cả mọi người làm việc bằng cách này? Các máy chủ của tất cả mọi người là chạy bên cạnh việc cho bạn? Chúng ta sẽ hiểu rằng con số. Và của HTML khá đơn giản. Vì vậy, tôi nghĩ rằng chúng ta đều tốt. Yeah. Tôi se trở lại. Đung [không nghe được]. Andi PENG: OK. Đung Vì vậy, nó chỉ bắt đầu để tải lên. Andi PENG: Không có lo lắng. Vì vậy, HTML, có mã nguồn sẽ được trực tuyến sau khi phần. Ngoài ra, David có một toàn bộ bó trực tuyến là tốt. Chỉ cần loại lướt qua nó để xem làm thế nào các trang HTML được viết. Đó là khá dễ dàng. Bất cứ điều gì bạn không biết, bạn có khá nhiều chỉ Google và bạn tốt. Tôi chỉ muốn chắc chắn rằng các máy chủ của bạn đang chạy. Đung Liệu nó làm điều này thường xuyên không? Andi PENG: Nó không bao giờ xảy ra với tôi. Tôi không biết nó thậm chí có thể ngủ đông. Đung [không nghe được]. Andi Peng: Tôi nghĩ everyone-- tôi đã không bao giờ có ngủ đông trước. Và tôi không biết tại sao. Nó là lạ. Đung [không nghe được]. Andi PENG: Là bạn ngủ đông? Đung [không nghe được]. Andi PENG: Yeah. Đung Đó là OK. Vì vậy, một khi nó đang mở. Andi PENG: OK. Chúng tôi sẽ đối phó với một số máy chủ các vấn đề sau khi phần. Bạn nên sử dụng tốt. Mặc dù, bạn muốn chắc chắn rằng bạn có được họ giải quyết trước khi bạn rời khỏi. Bởi vì nếu máy chủ của bạn không chạy, sau đó bạn sẽ không có khả năng làm việc pset, giống như bất kỳ một phần của pset. Vì vậy, bạn muốn chắc chắn rằng đó là làm việc. Mát. Được rồi. Nói lời tạm biệt mèo con. Tôi đã trải qua một thời gian dài tìm kiếm mà hình ảnh con mèo con để đưa vào. Vì vậy, anyways. Đung [không nghe được]. Andi PENG: Xin lỗi? Đung [không nghe được]. Andi Peng: Tôi nghĩ rằng đó là trên các trang web. Giống như spec? Đung [không nghe được]. Tôi nghĩ rằng các spec chỉ là trực tuyến trong tuần bảy. Tôi nghĩ rằng nó được gọi là pset6, thậm chí mặc dù chúng tôi đang ở trên tuần bảy, mà là một bit. Đung Nhưng tôi có nghĩa là nếu bạn muốn nhìn at-- nếu bạn muốn kéo lên phiên bản của chúng tôi các trang web từ sever của chúng tôi? Vì vậy, như server.c là pset, phải không? Nếu bạn muốn nhìn vào điều này, như thế nào nó sẽ kiểm tra ra? Andi Peng: Oh, vậy thực sự các pset, tất cả chúng ta đang làm đây là implementing-- đây, Tôi sẽ đi qua một thời gian ngắn này. Vì vậy, tất cả mọi người cho đó chỉ là nhận phần, các bạn là người may mắn. Có rất ít tài liệu để thực sự bao gồm ngày hôm nay. Tôi chỉ cần đi để chi tiêu tiếp theo 20 phút đi qua pset giúp đỡ. Bởi vì có một số hữu ích chức năng đó sẽ giúp cuộc sống của bạn. Và hy vọng, chúng ta sẽ được ra ở đây trong như 20 phút. ĐƯỢC. Vì vậy pset7 là sai. Mặc dù chúng tôi đang ở trên tuần bảy, nó thực sự pset6. Tôi sẽ thay đổi điều đó. Tất cả chúng ta đang làm trong pset6 đang tạo ra một máy chủ web. Đó là âm thanh siêu đáng sợ. Và đặc biệt là đối với những người các bạn nào đã nhìn mã phân phối, có rất nhiều mã, rất nhiều mã. Nhưng là hoàn toàn OK. Bởi vì gritty nitty một phần của thực sự tạo ra các máy chủ được thực hiện bởi chúng tôi. Tất cả các bạn đang thực sự hỏi để làm trong pset này chỉ là để làm một số thao tác chuỗi trong tập tin I / O. Nó thực sự như khá đơn giản. Vì vậy, khi lần đầu tiên bạn tải that-- người ở đây đã thực sự đã được tải về các pset và lấy một cái nhìn? Được rồi. Yeah. Hình như có 500 dòng mã rằng bạn đang đi để được như thế, chuyện gì đang diễn ra? Và đó là hoàn toàn tốt đẹp. Hãy chắc chắn rằng bạn xem đi bộ thuận. Bởi vì David và- Tôi không biết. Tôi không nghĩ rằng đó là Zamyla, một trong này. Nhưng tôi nghĩ rằng một số khác đi bộ thuận là khá hữu ích trong điều khoản của chỉ cần cho bạn biết những gì đang xảy ra bên trong mã của bạn. Và nó hoàn toàn OK. Bởi vì bốn chức năng mà bạn yêu cầu thực hiện đã thực sự zero để làm với các máy chủ thực sự. Tất cả họ phải làm là chỉ cần phân tích các chuỗi khác nhau, tìm kiếm thông qua các chuỗi, để đảm bảo những điều đang làm những gì họ đang phải làm. Vì vậy, để có hiệu lực đó, có một số chức năng rất, rất hữu ích, đặc biệt là đối với chuỗi thao tác, rằng chúng ta nên tất cả đi qua mà tôi nghĩ rằng tôi muốn rất hữu ích cho các bạn để tìm hiểu trước khi thử các pset. Và tất cả chúng đều chứa trong thư viện string.h của bạn. Có lẽ tốt hơn chức năng tôi đã không có ở đây, bởi vì tôi không bao giờ có thể sử dụng chúng hoặc có lẽ tôi chỉ không biết chúng tồn tại. Hãy lướt qua student.h. Bởi vì có đi có rất nhiều các chức năng mà rất hữu ích. Vì vậy, sáu mà tôi sử dụng nhiều nhất trong tôi pset khi tôi đã làm nó trong tuần qua là strtok, strchr, strrcher, strstr, strcasecmp, và strcpy. Và do đó, cuối cùng hai có vẻ khá quen thuộc với hầu hết các bạn. Trường hợp Str so sánh, tất cả nó là so sánh dây để kiểm tra xem chúng cho bình đẳng, bao gồm cả trường hợp. Và strcpy chỉ là bản sao một chuỗi thành một bộ đệm. Và do đó, những hai nên có vẻ rất quen thuộc với các bạn vào thời điểm này. Bởi vì chúng tôi đã sử dụng chúng rất nhiều, đặc biệt là cho các psets cuối cùng. Nhưng bốn đầu tiên có lẽ bạn không nhìn thấy cho đến bây giờ. Nhưng tôi sẽ chỉ đi qua chúng. Bởi vì chúng ta sẽ làm cho cuộc sống của bạn thực sự, thực sự dễ dàng for-- không dễ dàng, nhưng dễ dàng hơn nhiều cho pset sắp tới này. ĐƯỢC. Vì vậy, char * strtok, đây là chức năng định nghĩa cho chức năng này chứa trong chuỗi, thư viện h. Nếu bạn có một đầu vào của char * chuỗi, mà chỉ là một chuỗi, hoặc một char liên tục * deliminator, DELIM cho ngắn, tất cả nó làm là phá vỡ lớn hơn chuỗi thành một loạt những gì chúng ta gọi tokens ngăn cách bởi một giá trị nhất định. Vì vậy, trong một nghĩa nào đó, nếu tôi đã cung cấp cho bạn section.7.php, đây là một chuỗi. Vì vậy, đó sẽ là nếu tôi đã phải vượt qua trong này như str của tôi, tôi char * str, nếu deliminator của tôi đã chấm, tất cả điều này sẽ làm là tìm kiếm thông qua chuỗi. Và lần đầu tiên nó thấy một dấu chấm, nó sẽ chỉ trả lại cho con trỏ để cuối cùng tìm thấy token trong chuỗi trước khi điều này. Vì vậy, nó sẽ đi ngay đây. Và nó sẽ chỉ cho tôi 7.php. Và nếu tôi đã gọi chức năng một lần nữa, nó sẽ đưa cho tôi chỉ là .php. Và vì vậy tất cả chức năng này được làm là phá bỏ các chuỗi lớn hơn thành chuỗi nhỏ hơn tùy thuộc vào những gì bạn đang tìm kiếm. Và ví dụ như vậy, trong nhìn lên chức năng của bạn nếu bạn muốn nhìn vào những gì một số ký tự trở về hoặc nếu chấm xảy ra hoặc mở rộng xảy ra, chức năng này sẽ là khá hữu ích. Yeah. Đừng lo lắng. Điều này tất cả sẽ be-- yeah, có chuyện gì thế? Đung Vì vậy, trong những dòng đầu tiên, nếu chúng ta đang sử dụng ví dụ này, những gì chúng ta sẽ chèn vào đó? Andi PENG: Yeah. Bạn sẽ chỉ cần gọi một strtok chuỗi dấu phẩy DELIM. Và chuỗi bằng section.7.php. Và sau đó bạn đang DELIM có thể tương đương chỉ rải rác. Đung OK. Andi PENG: Yeah. Chỉ cần như thế. Tất cả các chức năng này là khá tương tự như khi chúng tôi đi qua chúng. Họ chỉ làm những điều hơi khác nhau. Nhưng tất cả họ đang đi làm cho cuộc sống của bạn dễ dàng hơn rất nhiều. Chức năng thứ hai, của một người này như siêu, siêu, siêu trọng, là the-- nắm giữ lên. Rất tiếc. Tìm kiếm strchr cho người đầu tiên occurrence-- thực sự, yeah. Strchr là chức năng mà Tôi chắc chắn chỉ cần đi qua. Vì vậy, bỏ qua những gì tôi nói cho các chức năng đầu tiên. Nó thực sự gọi là strchr. Vậy điều gì sẽ xảy ra ở đây là nếu bạn đã được trao một chuỗi trong một char c, nó sẽ chỉ cung cấp cho bạn bất cứ điều gì đó là gì. Yeah. Vì vậy, suy nghĩ về nó như str, mà là một chuỗi, và chr như char. Vì vậy, tất cả các bạn đang cố gắng làm là tìm kiếm cho nơi một char là trong một chuỗi. Và do đó, nó tìm kiếm đầu tiên xuất hiện của các nhân vật c trong chuỗi str. Đung [không nghe được]. Andi PENG: Yup. Và sau đó nếu nó không tìm thấy nó, nó sẽ trả về NULL. Vì vậy, một cái gì đó mà sẽ là rất hữu ích cho các bạn trong việc thực hiện pset nếu, nói, bạn đang tìm kiếm một phần mở rộng như một .docx cho Word tài liệu hay một .pdf cho một tài liệu PDF, bạn có thể loại sử dụng nó để tìm kiếm cho bất cứ điều gì là sau đó mỗi khi bạn nhìn thấy một dấu chấm, phải không? Và như vậy khá nhiều, nếu bạn chạy mà thông qua chức năng, nếu nó trả về NULL, sau đó bạn biết rằng nó không tìm thấy nó chấm, có nghĩa này rõ ràng không phải là một phần mở rộng tập hợp lệ. Hoặc nếu nó trở về một cái gì đó, sau đó bạn biết nó sẽ trả lại bất cứ nhân thực sự sau khi mở rộng. Vì vậy, những người bạn của những người có bắt đầu tìm kiếm thông qua tra cứu và phân tích cú pháp, chức năng này của sẽ là siêu hữu ích. Vì vậy, chúng tôi đang thực sự đi để chứng minh việc sử dụng này. Tại sao bạn không thử viết một chàng trai hàm bool câu char * s mà chỉ trả về true nếu s là một câu và sai khác. Vì vậy, gợi ý, bạn sẽ để có thể sử dụng strchr. Hoặc bạn chỉ cần tìm kiếm trong chuỗi cho một nhân vật nào đó. Và như vậy trong một câu, những gì ngăn cách một câu từ một phi câu, những gì nhân vật cụ thể? Đung Một không gian. Andi PENG: Một không gian, phải không? Và vì vậy những gì chúng ta có thể sẽ muốn làm trong chức năng này ở đây? Đung [không nghe được]. Andi PENG: Chúng ta sẽ muốn strchr chuỗi cho sự xuất hiện của không gian. Bởi vì nếu nó trả về một cái gì đó, sau đó chúng ta biết rằng điều này phải là một câu. Điều đó có nghĩa là chúng ta phải có một không gian trong chuỗi này. Nếu không có không gian, sau đó chúng tôi biết rằng, hey, đoán nó không phải là một chuỗi. Đây có thể chỉ là một từ rất dài. Vì vậy, tôi sẽ cung cấp cho các bạn một vài phút để viết chức năng này. Yeah. Đung Em có nhận chuỗi này từ người sử dụng? Andi PENG: Yeah. Vì vậy, đây chỉ là một chức năng. Vì vậy, hãy tưởng tượng bên trong chức năng chính của bạn Bạn đã have-- hãy đi đây. ĐƯỢC. Vì vậy, tôi đã viết chương trình này ở đâu Tôi có chức năng chính của tôi ở đâu Tôi vừa mới tạo ra hai chuỗi. Người đầu tiên là chào, tên tôi là Andi-- rõ ràng, một câu. Thứ hai của tôi chỉ là Andi, rõ ràng không kết án. Và vì vậy tôi chạy cả của những người chuỗi thông qua chức năng này. Tôi muốn các bạn để viết câu lạnh. Và tôi đang lưu trữ những giá trị, và sau đó chỉ cần in ra. Vì vậy, nghĩ rằng người dùng sẽ vượt qua trong một chuỗi. Và sau đó bạn sẽ cơ bản tìm hiểu xem đó là một câu hay không và trở về đúng hay sai cho phù hợp. Nếu các bạn muốn đưa ra một ngón tay cái lên hoặc người đứng đầu lên, đầu gật đầu, là bất cứ ai sẵn sàng để bắt đầu này, mà muốn được tốt. Có lẽ như 30 giây nhiều hơn? Được rồi. Hãy xem bạn có thể thử viết chức năng này. Vì vậy, giả coding-- tôi chỉ cần đi tới loại đi qua này ngay bây giờ. Khá nhiều, chúng ta biết được chức năng mà chúng ta cần phải sử dụng. Chúng ta sẽ gọi hàm này trên chuỗi và tìm kiếm một không gian của chúng tôi. Nếu nó trở về một cái gì đó, sau đó chúng ta phải biết rằng, rõ ràng, đây là một câu. Bởi vì có không gian. Sau đó chúng ta sẽ trở lại đúng. Khác, chúng tôi sẽ trả về false. Có ai muốn cho cho tôi những dòng mã đầu tiên rằng chúng tôi đang thực sự đi sử dụng để viết này? Nó thực sự là khó khăn nhất dòng mã là tốt. Yeah. Đung Nếu strtok s-- Andi PENG: Chỉ cần strchr. Đung [interposing GIỌNG NÓI] không gian không phải là bằng null. Andi PENG: Cool. Chính xác. Mọi người đều hiểu rằng dòng đầu tiên? Chúng tôi sẽ gọi strstr, mà là một chức năng để tìm kiếm chuỗi s cho char của không gian. Và nếu nó tìm thấy nó, nó sẽ trả về một con trỏ đến nơi đó là. Nếu nó không tìm thấy nó, nó sẽ trả về NULL. Vì vậy, nếu nó trả về bất cứ điều gì khác hơn NULL, sau đó chúng ta biết nó được tìm thấy một không gian. Điều đó có ý nghĩa? Mát. Được rồi. Vì vậy, nếu chúng ta biết nó được tìm thấy một không gian, những gì chúng ta muốn làm gì? Đung Quay trở lại đúng. Andi PENG: Yup. Return true. Và sau đó, một người nào đó muốn kết thúc chức năng cho tôi không? Yeah. Khác, chỉ cần như thế. Và cố gắng biên dịch này. Yup. Vì vậy, các bạn có thể nhìn thấy từ kết quả đầu ra, hãy nhớ Booleans trong C luôn thể hiện trong hệ nhị phân. 1 là đúng. 0 là sai. Nếu chúng ta để chạy này chức năng trên một chuỗi, mà là Hi, tôi tên của Andi-- rõ ràng, một sentence-- kết quả in ra để 1 đó là sự thật. Điều thứ hai, mà chỉ là một từ, bộ kết quả in ra đến 0, đó là sai. Tất cả mọi người loại rõ ràng về cách Chức năng này được viết? Yeah. Đung chúng tôi có thể cũng làm, thay vì không bằng không, bằng bằng 0, để nó bằng? Andi PENG: No. Bởi vì strchr là một chức năng. Tôi sẽ trở lại này. Vì vậy, các kiểu trả về là những gì của hàm strchr của chúng tôi? Đung Oh, OK. Hoặc NULL. Andi PENG: Yeah. Đó là một char * mà nói với tôi rằng bất cứ điều gì chức năng này sẽ trở lại, nó sẽ là một con trỏ. Hoặc là con trỏ là có được trỏ đến nơi nó được tìm thấy nó, hoặc nó sẽ trở lại một con trỏ đến NULL. Trong cả hai trường hợp, nó sẽ để trả về một con trỏ đến một cái gì đó. Và vì vậy nếu bạn đã đánh đồng này bằng, bình đẳng, 0, bạn sẽ nhận được một lỗi biên dịch. Bởi vì nó sẽ trả về một con trỏ. Và bạn sẽ cố gắng so sánh một con trỏ đến một số nguyên. Và các máy tính không sẽ thích điều đó. Vâng, chính xác. Mát. Tất cả mọi người tốt? Và thứ hai, chúng ta sẽ đi hơn một chức năng gọi là strstr. Không phải lo lắng nếu các chức năng là khó hiểu bạn. Họ đang khó hiểu cho tôi. Như vậy, các bạn có thể đã thấy, họ tất cả âm thanh khá giống nhau. Chỉ cần bất cứ khi nào bạn đang nhầm lẫn, kéo lên thư viện string.h. Và các bạn có thể sắp xếp thông qua đó một người trong đó. Vì vậy, strstr, tất cả điều đó không được tìm kiếm một chuỗi cho một chuỗi khác cả. Vì vậy, nơi strchr chỉ tìm kiếm cho một nhân vật duy nhất, tìm kiếm strstr cho toàn bộ một chuỗi. Vì vậy, tôi muốn nhìn vào, tôi không biết, Hi, tôi tên là Andi. Và tên người bạn tốt nhất của tôi cũng là Andi. Nếu tôi muốn tìm kiếm này câu cho toàn bộ lời của Andi, kim của tôi sẽ là bất cứ điều gì bạn đang tìm kiếm. Và đống cỏ khô của bạn là bất cứ điều gì bạn đang tìm kiếm nó trong. Vì vậy, nếu bạn đang tìm kiếm một từ cụ thể trong một câu, từ đó là có được cây kim của bạn. Và sau đó câu tự là có được đống cỏ khô của bạn. Và do đó, nó chỉ tìm kiếm sự xuất hiện đầu tiên của chuỗi kim trong chuỗi đống cỏ khô. Nó trả về con trỏ đến sự xuất hiện đầu tiên. Ngoại trừ, hãy nhớ trong trường hợp này, đó là xuất hiện đầu tiên của toàn bộ chuỗi mà bạn đang tìm kiếm cho, không chỉ là một nhân vật. Và do đó, đây là gần như điều tương tự như chức năng chúng ta chỉ cần làm, chỉ với thêm một chút đặc hiệu. Bởi vì bạn đang tìm kiếm nhiều hơn chỉ là một ký tự. Và việc sử dụng là chính xác giống nhau như một trong đó chúng ta chỉ cần làm. Mọi người đều OK với điều này? ĐƯỢC. Cuối cùng chúng ta sẽ đi hơn là strrchr, mà không phải là nhầm lẫn với strstr hoặc với strchr. strrchr có r thêm trong đó. Hãy cẩn thận khi bạn đang gõ. Bạn có thể tìm thấy chính mình trong đó một r thêm hoặc không bao gồm một r, và sau đó chức năng của bạn là đã không đi làm việc. Và bạn sẽ bị nhầm lẫn. Hãy cẩn thận rằng bạn đang đánh vần tất cả các chức năng bên phải. Vì vậy strrchr là chính xác cùng một điều như strchr ngoại trừ nó tìm kiếm không phải là lần đầu tiên sự xuất hiện của một nhân vật cụ thể, nhưng thay vì xuất hiện cuối cùng. Và như vậy, trong ý nghĩa đó, nó gần như chính xác như nhau. Nhưng thay vì di chuyển chuyển tiếp trong một chuỗi, bạn sẽ được di chuyển ngược trong một chuỗi. Chính xác điều tương tự, bạn chỉ tìm kiếm theo một thứ tự khác nhau. Và vì vậy đây có thể là siêu, siêu hữu ích cho tra cứu của bạn chức năng, người đầu tiên chức năng trên pset của bạn. Hãy giả vờ rằng chúng tôi cần phải viết một Hàm void mở rộng, trong đó chúng tôi vượt qua một hằng số char * Tên tập tin, chỉ là một chuỗi, một tên tập tin, mà mất trong đó tên và in ra các phần mở rộng của tập tin đó. Vì vậy, ví dụ, nếu tôi được vượt qua trong chuỗi các pset7.zip, nó sẽ in ra chỉ phần mở rộng, đó là .zip. Và điều này sẽ làm việc cho bất kỳ loại phần mở rộng, .docx cho Word hoặc .pdf cho một PDF file hoặc .html cho một tập tin HTML. Khá nhiều, viết chức năng mà có thể làm điều đó. Tôi đang thực sự đi vào chuyển sang IDE. Nó không phải là load-- có chúng tôi đi. Vì vậy, tất cả những gì đã làm được ở đây là tạo ra một char *, một chuỗi đầu tiên, gọi pset7.zip. Tôi sẽ để phóng to. Tôi đã tạo ra một chuỗi thứ hai gọi finalpaper.docx. Và viết cho tôi một chức năng mà khi gọi là sẽ chỉ in ra các phần mở rộng tên tập tin. Có thể mất một vài phút để suy nghĩ về làm thế nào bạn đang đi để làm điều này. Hơi khó khăn hơn so với lần trước, nhưng việc sử dụng gần như là chính xác như nhau. Yeah. Vì vậy, viết một chức năng gọi là phần mở rộng rằng, nếu tôi cung cấp cho bạn tên của một tập tin, nếu tôi được là để cung cấp cho bạn pset7.zip-- tôi muốn bạn in ra chỉ là .zip. Nếu tôi cho bạn thích finalpaper.docx, chỉ cần in ra .docx, chỉ là phần mở rộng của tập tin bất cứ điều gì. Điều này thực sự chỉ có hai dòng mã. Vì vậy, thử xem nếu bạn có thể có thể làm điều đó trong đó. Trên thực tế, nó chỉ có một dòng mã. Nhưng hai dòng là tiêu chuẩn có thể nhiều hơn. Chức năng gì chúng ta có thể sẽ muốn gọi? Đung strrchr. Andi PENG: strrchr, phải. Bởi vì chúng tôi đang tìm kiếm từ bên phải trái. Tôi đã không cung cấp cho các bạn một ví dụ như thế này, nhưng nếu tôi đưa cho bạn một ví dụ như www.apple.com và tôi chỉ muốn các năm, nó muốn được một ví dụ về nơi bạn muốn gọi các ví dụ cuối cùng của thời kỳ này và không phải là đầu tiên, phải không? Nếu bạn là strchr cuộc gọi, nó sẽ đã đưa cho bạn những apple.com. Nếu bạn gọi strrchr, nó sẽ cho bạn những .com. Và vì vậy hãy cẩn thận mà trên đó ways-- trong ví dụ của tôi, bạn có thể có thể có thể có chỉ được viết bằng cách sử dụng strchr, vì chỉ có một dấu chấm. Nhưng trong trường hợp khác, mà có thể không phải là trường hợp. Và do đó, luôn cố gắng thiết kế code của bạn tốt, vì vậy that-- yeah? Đung Vì vậy, trong Ví dụ bạn vừa nói, khi bạn strrchr nó sẽ cung cấp cho bạn năm hoặc có thể đến? Andi PENG: Nó sẽ cung cấp cho bạn các năm. Đung OK. Andi PENG: Yeah. Nó trỏ đến nơi mà nó tìm thấy nó. Yeah. 30 giây có thể? Yeah. Mọi người đều tốt hoặc thời gian có thể nhiều hơn một chút? Giơ tay? Hiển thị của người đứng đầu? Mát. Bất cứ ai cũng muốn để cho tôi đầu tiên dòng mã cho chương trình này? Đung [không nghe được]. Andi PENG: Vì vậy, trước hết, hãy thể phá vỡ này xuống. Vì vậy, các kiểu trả về của strrchr là gì? Hãy quay trở lại. strrchr, kiểu trả về là gì? Đung Char * Andi PENG: Đó là một char *, phải không? Điều đó có nghĩa rằng bạn có thể sẽ muốn tạo một char * để loại cửa hàng bất cứ khi nào nó trở lại, phải không? Bởi vì nếu bạn gọi các strrchr chức năng, nó sẽ cung cấp cho bạn một con trỏ đến bất cứ nơi nào nó thấy rằng thời gian qua, bên phải? Nhưng bạn sẽ muốn lưu trữ một nơi nào đó, phải không? Và do đó, làm thế nào để chúng ta viết mã này vào chương trình của chúng tôi? Đung Bạn làm cho các char * [Không nghe thấy]. Andi PENG: Yep. Đung [không nghe được]. Andi PENG: strrchr. Yeah. Oh, bỏ lỡ một r đó. Đung tên File [không nghe được]. Nó là gì? Oh, Nó chỉ là. Andi Peng: Oh, nó chỉ là. Yup, xin lỗi. Lỗi của tôi. Ví dụ không phù hợp. Đung Và sau đó rải rác. Andi PENG: Yup. Hãy cẩn thận khi bạn kẻ are-- đây, hãy để tôi phóng to. Hiện chúng tôi đi. Hãy cẩn thận khi bạn kẻ đang gõ, đặc biệt là khi bạn đang làm chỉ là một char. Nó thực sự dễ dàng để vô tình chỉ làm dấu ngoặc kép chứ không phải là duy nhất. Rằng sẽ không làm việc. Trình biên dịch của bạn sẽ phàn nàn. Và chức năng của bạn là chỉ là sẽ không chạy. Và vì vậy hãy cẩn thận khi bạn đang làm việc với ký tự mà nó là một dấu nháy đơn. Và do đó, dòng này của Mã có ý nghĩa với tất cả mọi người? Chúng tôi đang tạo ra một con trỏ char *. Vì lợi nhuận strrchr một cái gì đó của kiểu con trỏ. Và như vậy chúng ta sẽ gọi strchr trên s, đó là các chuỗi, các tập tin tên, rằng chúng ta đang đi trong. Và chúng tôi đang tìm kiếm cuối cùng thể hiện của một khoảng thời gian, đó là chỉ báo giá duy nhất chấm báo duy nhất. Yeah. Đung Khi chúng ta sử dụng dấu ngoặc kép và khi nào chúng ta sử dụng dấu ngoặc đơn? Andi PENG: Yeah. Vì vậy, đôi dấu ngoặc kép là luôn luôn được sử dụng khi bạn có một chuỗi nhiều hơn chỉ là một. Vì vậy, nếu bạn đang làm strstr, đó là một trong những mà bạn tìm kiếm một chuỗi cho chuỗi, bạn sẽ vượt qua nó trong dấu ngoặc kép. Nhưng bất cứ lúc nào nó chỉ một nhân vật duy nhất, bạn muốn làm một dấu nháy đơn. Đó là một điều tốt để giữ trong tâm trí. Vì vậy, bây giờ chúng ta có của chúng tôi con trỏ, chúng ta làm gì với nó? Tôi hỏi các bạn để in nó ra, phải không? Vì vậy, [nghe được], bạn muốn cung cấp cho tôi những dòng mã? Đung printf-- Andi PENG: Yeah. Đung --Bạn cần một giữ chỗ. Andi PENG: Yup. Đung In giữ chỗ. Tôi không biết những gì nơi giữ là nhưng điểm đến nó. ĐƯỢC. Hãy bỏ qua cho bây giờ sau đó. Đung Và sau đó comma-- Andi PENG: Pointer, phải không? Đung Pointer, yup. Andi PENG: Vì vậy, loại một câu hỏi trick, đã làm với con trỏ và chuỗi mà chúng tôi đã loại nói về đã. Những loại giữ chỗ chúng ta làm cần cho một con trỏ cho một char *? Đung [không nghe được]. Andi PENG: Yeah. Nó dễ dàng hơn bạn nghĩ rằng nó là. Đung String? Andi PENG: Nó chỉ là một chuỗi, chính xác. Bởi vì nhớ chuỗi không thực sự tồn tại. Một char * là chính xác giống như là một chuỗi. Và thật ra điều này s là gì nên đã được sử dụng tất cả cùng. ĐƯỢC. Hãy xem, nếu chúng ta có thể thử chạy này. Hãy làm một phần mở rộng thực hiện. Mát. Các bạn thấy thế nào tôi thông qua tại psset7.zip và finalpaper.docx, và nó chỉ in ra các .zip và .docx? Có lý? OK Vì vậy, tôi nghĩ rằng trong cái nhìn của bạn lên chức năng trong pset của bạn sẽ được hỏi nếu chuỗi có một kết thúc có hậu nhất định, bạn có để cung cấp cho một mã số lỗi nhất định. Và vì vậy đây sẽ là khá khủng khiếp. Bởi vì nếu bạn có thể hình ra những phần mở rộng là, sau đó bạn có thể so sánh rằng mở rộng để xem nó có phù hợp lên với một phần mở rộng nhất định. Và sau đó bạn có thể trở lại một thông báo lỗi, phải không? Yeah. Đung Vì vậy, chúng tôi không có thêm 1 hoặc bất cứ điều gì? Con trỏ sẽ đi đến the-- Andi PENG: Nope. Đung --point sau nó. Andi PENG: Yeah. Nó chỉ chính xác để nơi xảy ra được. Vì vậy, ví dụ ở đây, chúng tôi tìm kiếm cho giai đoạn này. Vì vậy, nó sẽ quay trở lại một con trỏ đến giai đoạn này. Và sau đó nó sẽ in ra bắt đầu từ giai đoạn này. Vì vậy, bạn không cần phải thêm 1. Mặc dù, nó hoàn toàn tốt để, nếu bạn đã từng không chắc chắn, để chỉ loại các kiểm tra nó ra cho mình. Xây dựng một chương trình mẫu. Kiểm tra nó ra khỏi chính mình và nhìn thấy nơi nó đang in. Đó cũng không phải là một cách xấu để làm điều đó. Mát. Và đó là khá nhiều tất cả Tôi đã cho các bạn ngày hôm nay. Chúng tôi đã làm rất nhiều pset thứ ngày hôm nay. Vì vậy, khi nghi ngờ, như Tôi nói, luôn luôn nhìn lên thư viện string.h cho pset này. Có đi có rất nhiều chức năng trong đó có thể hữu ích. Một số có thể không có ích. Tôi thực sự không biết. Wade thông qua nó, có một bó toàn bộ chúng. strstr, strchr, strrchr là siêu, siêu hữu ích, cũng như các strcpys và strcasecmps rằng chúng ta đã sử dụng. Nó chỉ là rất nhiều phiền xung quanh với dây, xác định nếu chúng bằng nhau, nhận ra công cụ của chuỗi, và là có thể mở các tập tin một cách chính xác. Đó là rất nhiều các tập tin I / O. pset thực sự không phải là xấu. Bạn sẽ mất một nhìn vào nó, tải về nó, và nhìn thấy một bó toàn bộ các mã. Không có lo lắng, mã bạn thực sự viết không phải là xấu cả. Nếu ai đã có vấn đề với họ máy chủ, đến gặp tôi sau khi phần. Xin lỗi một lần nữa cho không đưa kẹo cho Halloween. Tôi không biết những gì đang xảy ra với tôi. Nhưng chúng ta sẽ có gấp đôi kẹo thời gian tiếp theo. Và may mắn trong pset của bạn trong tuần này. Yup.