[Powered by Google Translate] [ವಿಭಾಗವು 5: ಕಡಿಮೆ ಆರಾಮದಾಯಕ] [ನೇಟ್ Hardison, ಹಾರ್ವರ್ಡ್ ವಿಶ್ವವಿದ್ಯಾಲಯ] [ಈ CS50 ಹೊಂದಿದೆ.] [CS50.TV] ಆದ್ದರಿಂದ ಪುರುಷರಿಗೆ ಸ್ವಾಗತಿಸುತ್ತಾರೆ. ವಿಭಾಗ 5 ಸ್ವಾಗತ. ಈ ಹಂತದಲ್ಲಿ, ರಸಪ್ರಶ್ನೆ 0 ಸಂಪೂರ್ಣಗೊಳಿಸಿದ ನಂತರ ಮತ್ತು ನೀವು ಮಾಡಿದ ಹೇಗೆ ಕಂಡುದಾಗಿ, ನಾನು ಬಹಳ ಈ ವಿಭಾಗದಲ್ಲಿ ಅಂಕಗಳು ಪ್ರಭಾವಿತರಾಗಿದ್ದ ಏಕೆಂದರೆ ಆಶಾದಾಯಕವಾಗಿ ನೀವು ನಿಜವಾಗಿಯೂ ಒಳ್ಳೆಯ ಭಾವನೆ. ನಮ್ಮ ಆನ್ಲೈನ್ ವೀಕ್ಷಕರಿಗೆ, ನಾವು ಪ್ರಶ್ನೆಗಳನ್ನು ಒಂದೆರಡು ಹೊಂದಿತ್ತು ಮಾಡಿದ ಸಮಸ್ಯೆ ಸೆಟ್ನಲ್ಲಿ ಕಳೆದ ಎರಡು ಸಮಸ್ಯೆಗಳನ್ನು - ಅಥವಾ ರಸಪ್ರಶ್ನೆ ಮೇಲೆ, ಬದಲಿಗೆ. ಆದ್ದರಿಂದ ನಾವು ಎಲ್ಲರೂ ಏನಾಯಿತು ನೋಡುತ್ತಾನೆ ಇದರಿಂದ ನಿಜವಾಗಿಯೂ ವೇಗವಾಗಿ ಆ ಮೇಲೆ ಹೋಗಲು ನೀನು ಮತ್ತು ಕೇವಲ ಪರಿಹಾರವನ್ನು ಸ್ವತಃ ನೋಡುವ ಹೆಚ್ಚು ವಾಸ್ತವಿಕ ಪರಿಹಾರದ ಮೂಲಕ ಹೋಗಲು ಹೇಗೆ. ನಾವು ನಿಜವಾಗಿಯೂ ವೇಗವಾಗಿ ಸಮಸ್ಯೆಗಳ ಕಳೆದ ಒಂದೆರಡು ವರ್ಷಗಳಿಂದ ಹೋಗಲು 32 ಮತ್ತು 33 ನೀನು. ಕೇವಲ, ಮತ್ತೆ, ಆದ್ದರಿಂದ ಆನ್ಲೈನ್ ವೀಕ್ಷಕರು ಈ ನೋಡಬಹುದು. ನೀವು ಪುಟ 13 ರಂದು ಇದು ನಿಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು 32, ಬದಲಾಗುತ್ತವೆ ವೇಳೆ 16 ಆಫ್ 13 ಔಟ್, ಸಮಸ್ಯೆಯನ್ನು 32 ಎಲ್ಲಾ ಸ್ವಾಪ್ಸ್ ಸುಮಾರು. ಇದು ಎರಡು ಪೂರ್ಣಾಂಕಗಳ ವಿನಿಮಯ ಎಲ್ಲಾ. ನಾವು ಉಪನ್ಯಾಸ ಬಾರಿ ಒಂದೆರಡು ಮೇಲೆ ಹೋದ ಬಯಸುವ ಸಮಸ್ಯೆ. ಮತ್ತು ಇಲ್ಲಿ, ನಾವು ನೀವು ಏನು ಕೇಳುತ್ತಿದ್ದರು ತ್ವರಿತ ಸ್ಮರಣೆಯ ಜಾಡನ್ನು ಹೊಂದಿದೆ. ಅವರು ಸ್ಟಾಕ್ ಇರುತ್ತವೆ ಎಂದು ಚರಾಂಕಗಳ ಮೌಲ್ಯಗಳನ್ನು ತುಂಬಲು ಕೋಡ್ ಈ ಸ್ವಾಪ್ ಕ್ರಿಯೆಯ ಮೂಲಕ ಹೋಗುತ್ತದೆ ಎಂದು. ನಿರ್ದಿಷ್ಟವಾಗಿ, ನಾವು ನಲ್ಲಿ ಹುಡುಕುತ್ತಿರುವ - I'm ಈ ಐಪ್ಯಾಡ್ ಪತನವಾದರೆ ಹೋಗಿ - ನಿರ್ದಿಷ್ಟವಾಗಿ, ನಾವು ನಲ್ಲಿ ಹುಡುಕುತ್ತಿರುವ ಈ ಸಾಲನ್ನು ಇಲ್ಲಿ 6 ಬಲ ಸಂಖ್ಯೆಯನ್ನು ಹೊಂದಿದೆ. ಮತ್ತು ಹಿಂದಿನ ಸಮಸ್ಯೆಯನ್ನು ಕೇವಲ contiguity 6 ಸಂಖ್ಯೆಯ ನ. ನಾವು ಮಾಡಲು ಬಯಸುವ ಮೆಮೊರಿಯನ್ನು ರಾಜ್ಯದ ಪ್ರದರ್ಶಿಸಲು ಅಥವಾ ಲೇಬಲ್ ಇದು ಈ ಸಾಲಿನ ಸಂಖ್ಯೆ 6 ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಮಯದಲ್ಲಿ ಹೊಂದಿದೆ, ಎಂದು ಇದು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಇಲ್ಲಿಯೇ ನಮ್ಮ ಸ್ವಾಪ್ ಫಂಕ್ಷನ್ ನಿಂದ ಹಿಂದಿರುಗಿತು. ನಾವು ಇಲ್ಲಿ ಕೆಳಗೆ ಸ್ಕ್ರಾಲ್ ವೇಳೆ, ನಾವು ಮೆಮೊರಿ ಎಲ್ಲ ವಿಳಾಸಗಳನ್ನು ನಮಗೆ ಒದಗಿಸಿದ ಎಂದು ಕಂಡಿತು. ಇದು ಬಹಳ ಪ್ರಮುಖವಾಗಿದೆ; ನಾವು ಒಂದು ಕ್ಷಣ ಅದನ್ನು ಹಿಂತಿರುಗಿ ಮಾಡುತ್ತೇವೆ. ನಂತರ ಕೆಳಗೆ ಇಲ್ಲಿ ಕೆಳಭಾಗದಲ್ಲಿ, ನಾವು ಸೂಚಿಸಲು ನೀನು ಒಂದು ಸಣ್ಣ ಮೆಮೊರಿ ರೇಖಾಚಿತ್ರ ಹೊಂದಿತ್ತು. ನಾನು ನನ್ನ ಐಪ್ಯಾಡ್ನಲ್ಲಿ ಈ ಔಟ್ ಮಾಡಿದ. ಆದ್ದರಿಂದ ನಾನು ಉಲ್ಲೇಖಕ್ಕಾಗಿ ಐಪ್ಯಾಡ್ ಮತ್ತು ಈ ಕೋಡ್ ನಡುವೆ ಹಿಂದಕ್ಕೆ ಮತ್ತು ಮುಂದಕ್ಕೆ ಪರ್ಯಾಯವಾಗಿ ಪಡೆಯಲಿದ್ದೇನೆ. ಇದೀಗ ಪ್ರಾರಂಭಿಸೋಣ. ಮೊದಲ ಹಕ್ಕನ್ನು ಇಲ್ಲಿ ಮುಖ್ಯ ಸಾಲುಗಳನ್ನು ಮೊದಲ ದಂಪತಿ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಲು ಅವಕಾಶ. ಆರಂಭಿಸಲು, ನಾವು 2 1 ಮತ್ತು ವೈ, x ಆರಂಭಿಸಲು ನೀನು. ನಾವು ಎರಡು ಪೂರ್ಣಾಂಕ ಅಸ್ಥಿರ ಹೊಂದಿರುತ್ತವೆ ಆದ್ದರಿಂದ, ಅವರು ಸ್ಟಾಕ್ ಅವನ್ನು ನೀನು ಎರಡೂ. ನಾವು ಅವರಿಗೆ ಒಂದು 1 ಮತ್ತು 2 ಹಾಕಲು ನೀನು. ನನ್ನ ಐಪ್ಯಾಡ್ ಗೆ ಮಗುಚಲ್ಪಡುತ್ತವೆ ಆದ್ದರಿಂದ, ಆಶಾದಾಯಕವಾಗಿ, ನೋಡೋಣ - ಆಪಲ್ ಟಿವಿ ಪ್ರತಿರೂಪಿಸುವಿಕೆಯನ್ನು, ಹಾಗೂ ನಾವು ಹೋಗಿ. ಸರಿ. ನನ್ನ ಐಪ್ಯಾಡ್ ಗೆ ಮಗುಚಲ್ಪಡುತ್ತವೆ ಹಾಗಾಗಿ, ನಾನು 2 1 ಮತ್ತು ವೈ, x ಆರಂಭಿಸಲು ಬಯಸುವ. ನಾವು X ಗುರುತು ಪೆಟ್ಟಿಗೆಯಲ್ಲಿ 1 ಬರೆದು ಸ್ವಲ್ಪ ಸುಮ್ಮನೆ ಹಾಗೆ ಮತ್ತು ಪೆಟ್ಟಿಗೆಯಲ್ಲಿ 2 ವೈ ಗುರುತಿಸಲಾಗಿದೆ. ಸರಳವಾದ. ಈಗ ಅವರ ಲ್ಯಾಪ್ಟಾಪ್ ಹಿಂತಿರುಗಿ ಅವಕಾಶ ಮುಂದಿನ ಏನಾಗುತ್ತದೆ ನೋಡಿ. ವಸ್ತುಗಳು ಟ್ರಿಕಿ ಪಡೆಯಲು ಅಲ್ಲಿ ಈ ಮುಂದಿನ ಸಾಲು. ನಾವು ನಿಯತಾಂಕಗಳನ್ನು ಮಾಹಿತಿ x ನ ವಿಳಾಸಕ್ಕೆ ಮತ್ತು y ನ ವಿಳಾಸಕ್ಕೆ ರವಾನಿಸಲು ಸ್ವಾಪ್ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಒಂದು ಮತ್ತು ಬಿ. x ಮತ್ತು y ವಿಳಾಸವನ್ನು ವಿಳಾಸವನ್ನು ನಾವು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವ ವಸ್ತುಗಳು ಈ ಬುಲೆಟ್ ಉಲ್ಲೇಖಿಸುವಾಗ ಇಲ್ಲದೆ ಇಲ್ಲಿ ಬಲ ಕೆಳಗೆ ಸೂಚಿಸುತ್ತಿದೆ. ಮತ್ತು ಅದೃಷ್ಟವಶಾತ್, ಮೊದಲ ಎರಡು ಬುಲೆಟ್ ಪಾಯಿಂಟ್ ಉತ್ತರಗಳು ನಿಖರವಾಗಿ ಎಂದು ನಮಗೆ ತಿಳಿಸಿ. ಮೆಮೊರಿ x ನ ವಿಳಾಸಕ್ಕೆ 10, ಮತ್ತು ಮೆಮೊರಿ y ನ ವಿಳಾಸಕ್ಕೆ 14 ಆಗಿದೆ. ಆದ್ದರಿಂದ ಆ ಆಗಿ ಜಾರಿಗೆ ಪಡೆಯುತ್ತೀರಿ ಎಂದು ಮೌಲ್ಯಗಳು ಒಂದು ಮತ್ತು ನಮ್ಮ ಸ್ವಾಪ್ ಕಾರ್ಯದಲ್ಲಿ ಅಪ್ ಅಗ್ರ ಬೌ. ಆದ್ದರಿಂದ ಮತ್ತೆ, ನಮ್ಮ ಚಿತ್ರದಲ್ಲಿ ಮತ್ತೆ ಸ್ವಿಚಿಂಗ್, ನಾನು ಒಂದು 10 ಬರೆಯಬಹುದು ಬೌ ಮತ್ತು ಒಂದು 14. ನಾವು ಸ್ವಾಪ್ ಮುಂದುವರಿಸಲು ಅಲ್ಲಿ ಈಗ, ಈ ಬಿಂದುವಾಗಿದೆ. ಆದ್ದರಿಂದ, ಮತ್ತೆ ಲ್ಯಾಪ್ಟಾಪ್ ಮತ್ತೆ ಫ್ಲಿಪ್ಪಿಂಗ್ ನಾವು ಸ್ವಾಪ್ ಕೆಲಸ ರೀತಿಯಲ್ಲಿ tmp ಒಂದು ಮತ್ತು ಅಂಗಡಿ ಪರಿಣಾಮವಾಗಿ ನಾನು ಮೊದಲ dereference ಎಂದು ನೋಡಿ. ಆದ್ದರಿಂದ dereference ಆಯೋಜಕರು ಹೇ "ಹೇಳುತ್ತಾರೆ. ವಿಳಾಸವನ್ನು ವಿವಿಧ ಒಂದು ವಿಷಯಗಳನ್ನು ಟ್ರೀಟ್. ಆ ವಿಳಾಸದಲ್ಲಿ ಸಂಗ್ರಹಿಸಿದ ಯಾವುದೇ ಹೋಗಿ, ಮತ್ತು ಅದನ್ನು ಲೋಡ್. " ಏನು ವೇರಿಯಬಲ್ ಔಟ್ ಲೋಡ್ ನಮ್ಮ tmp ವೇರಿಯಬಲ್ ಗೆ ಸಂಗ್ರಹಿಸಲು ಹೋಗುತ್ತದೆ. ಐಪ್ಯಾಡ್ ಮರಳಿ ಫ್ಲಿಪ್ಪಿಂಗ್. ನಾವು 10 ತಿಳಿಸಲು ಹೋದರೆ, ನಾವು ವಿಳಾಸಕ್ಕೆ 10 varible X ಎಂದು ನಮಗೆ ತಿಳಿದಿದೆ ನಾವು ಮೆಮೊರಿ x ನ ವಿಳಾಸಕ್ಕೆ 10 ಎಂದು ನಮ್ಮ ಬುಲೆಟ್ ಪಾಯಿಂಟ್ ಹೇಳಿದ ಕಾರಣ. ಆದ್ದರಿಂದ ನಾವು ನಮ್ಮ ಐಪ್ಯಾಡ್ ಮೇಲೆ ನೋಡಿ ಎಂದು, ಅಲ್ಲಿ ಹೋಗಿ 1 ಅದು ಮೌಲ್ಯವನ್ನು, ಪಡೆಯುವುದು ಮತ್ತು tmp ಆಗಿ ಲೋಡ್. ಮತ್ತೆ, ಈ ಅಂತಿಮ ವಿಷಯಗಳ ಅಲ್ಲ. ನಾವು ಸಂಚರಿಸಲು ನೀನು ಮತ್ತು ನಾವು ಕೊನೆಯಲ್ಲಿ ಕಾರ್ಯಕ್ರಮದ ನಮ್ಮ ಅಂತಿಮ ಸ್ಥಿತಿಗೆ ಪಡೆಯುತ್ತೀರಿ. ಆದರೆ ಈಗ, ನಾವು tmp ಸಂಗ್ರಹಿಸಲಾಗಿದೆ ಮೌಲ್ಯ 1 ಹೊಂದಿರುತ್ತವೆ. ಮತ್ತು ಇಲ್ಲಿ ಮೇಲೆ ತ್ವರಿತ ಪ್ರಶ್ನೆ ಇಲ್ಲ. [ಅಲೆಕ್ಸಾಂಡರ್] dereference ಆಯೋಜಕರು ಈಸ್ - ಕೇವಲ ವೇರಿಯಬಲ್ ಮುಂದೆ ನಕ್ಷತ್ರ ಸರಿ? >> ಹೌದು. , ನಾವು ಮತ್ತೊಮ್ಮೆ ನಮ್ಮ ಲ್ಯಾಪ್ಟಾಪ್ ಮತ್ತೆ ಫ್ಲಿಪ್ ಎಂದು, dereference ಆಯೋಜಕರು ಆದ್ದರಿಂದ ಬಲ ಮುಂದೆ ಈ ನಟ. ಆ ಅರ್ಥದಲ್ಲಿ, ಅದು - ನೀವು ಗುಣಾಕಾರ ಆಯೋಜಕರು ಅದನ್ನು ಕಾಂಟ್ರಾಸ್ಟ್ ಎರಡು ವಸ್ತುಗಳ ಅಗತ್ಯವಿದೆ; dereference ಆಯೋಜಕರು ಒಂದು unary ಆಯೋಜಕರು ಹೊಂದಿದೆ. ಕೇವಲ ಅವಳಿ ಆಯೋಜಕರು ವಿರುದ್ಧವಾಗಿ ಒಂದು ಮೌಲ್ಯವನ್ನು ಅನ್ವಯಿಸಲಾಗಿದೆ, ನೀವು ಎರಡು ವಿಭಿನ್ನ ಮೌಲ್ಯಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತವೆ ಅಲ್ಲಿ. ಆದ್ದರಿಂದ ಈ ಸಾಲಿನಲ್ಲಿ ಏನಾಗುತ್ತದೆ ಇಲ್ಲಿದೆ. ನಾವು ಮೌಲ್ಯ 1 ಲೋಡ್ ಮತ್ತು ನಮ್ಮ ತಾತ್ಕಾಲಿಕ ಪೂರ್ಣಾಂಕ ವೇರಿಯಬಲ್ ಅದನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಮುಂದಿನ ಸಾಲು, ನಾವು ಬೌ ವಿಷಯಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು - ಅಥವಾ, ಹೆಚ್ಚಾಗಿ, ನಾವು ಬೌ ಒಂದು ತೋರುತ್ತಿರುವಂತೆ ಅಲ್ಲಿ ಸ್ಥಾನಕ್ಕೇರಿತು ತೋರುತ್ತಿರುವಂತೆ ನಿಗದಿಪಡಿಸಲಾಗಿದೆ ವಿಷಯಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು. ನಾವು ಎಡ ಹಕ್ಕನ್ನು ಈ ವಿಶ್ಲೇಷಿಸಲು, ನಾವು, dereference ಬೌ ಹೋಗುವ ನಾವು 14 ಪರಿಹರಿಸಲು ಹೋಗುವ, ನಾವು, ಎಂದು ಪೂರ್ಣಾಂಕ ಕಿತ್ತುಕೊಂಡು ಹೋಗುವ ನಂತರ ನಾವು, ವಿಳಾಸಕ್ಕೆ 10 ಹೋಗುತ್ತಿದ್ದೇವೆ ಮತ್ತು ನಾವು ಬಾಹ್ಯಾಕಾಶಕ್ಕೆ ಬೌ ನಮ್ಮ dereference ಪರಿಣಾಮವಾಗಿ ಎಸೆದು ಹೋಗುವ. ನಾವು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಕಾಂಕ್ರೀಟ್ ಮಾಡಲು ನಮ್ಮ ಐಪ್ಯಾಡ್, ಮತ್ತೆ ಫ್ಲಿಪ್ಪಿಂಗ್, ನಾನು ಇಲ್ಲಿ ವಿಳಾಸಗಳು ಎಲ್ಲಾ ಸಂಖ್ಯೆಗಳ ಬರೆಯಲು ಅದನ್ನು ಸಹಾಯವಾಗಬಹುದು. ನಾವು ವೈ ನಲ್ಲಿ, ನಾವು ವಿಳಾಸಕ್ಕೆ 14 ನಲ್ಲಿ ನಮಗೆ ತಿಳಿದಿದೆ, X ವಿಳಾಸಕ್ಕೆ 10 ಆಗಿದೆ. ನಾವು ಬೌ ಆರಂಭವಾಗುವುದು, ನಾವು dereference ಬೌ, ನಾವು ಮೌಲ್ಯ 2 ಪಡೆದುಕೊಳ್ಳುವುದಕ್ಕೆ ನೀನು. ನಾವು ಆ ವಿಳಾಸಕ್ಕೆ 14 ನೇ ಜೀವಿಸುವ ಮೌಲ್ಯವನ್ನು ಏಕೆಂದರೆ ಈ ಮೌಲ್ಯವನ್ನು ಕಿತ್ತುಕೊಂಡು ಹೋಗುವ. ಮತ್ತು ನಾವು, ವಿಳಾಸಕ್ಕೆ 10 ಜೀವಿಸುವ ವೇರಿಯಬಲ್ ಹಾಕಿದರೆ ಎಂದು ನೀನು ಇದು ನಮ್ಮ ವ್ಯತ್ಯಯ X ಅನುಗುಣವಾಗಿ, ಬಲ ಇದೆ. ನಾವು ಇಲ್ಲಿ ಮೇಲೆಯೆ ಒಂದು ಸ್ವಲ್ಪ ಮಾಡಬಹುದು ನಮ್ಮ 1 ತೊಡೆದುಹಾಕಲು ಮತ್ತು ಬದಲಿಗೆ ನಾವು 2 ಬರೆಯಲು ಅಲ್ಲಿ. ಎಲ್ಲಾ ನಾವು ಈಗ ಬರೆಯಲ್ಪಟ್ಟಿತೆಂದರೆ X ಮಾಡಿದ ಸಹ, ಹಾಗೂ ವಿಶ್ವದ ಒಳ್ಳೆಯದು. ನಮ್ಮ tmp ವೇರಿಯಬಲ್ X ಹಳೆಯ ಮೌಲ್ಯವನ್ನು ಸಂಗ್ರಹಿಸಲಾಗಿದೆ ಎಂದು. ನಾವು ಮುಂದಿನ ಸಾಲಿನ ಸ್ವಾಪ್ ಪೂರ್ಣಗೊಳಿಸುತ್ತದೆ. ನಮ್ಮ ಲ್ಯಾಪ್ಟಾಪ್ ಮತ್ತೆ ಫ್ಲಿಪ್ಪಿಂಗ್. ಈಗ ಆ ಅವಶೇಷಗಳು ನಮ್ಮ ತಾತ್ಕಾಲಿಕ ಪೂರ್ಣಾಂಕ ವೇರಿಯಬಲ್ ವಿಷಯಗಳನ್ನು ಔಟ್ ತೆಗೆದುಕೊಳ್ಳಲು ಹೊಂದಿದೆ ಮತ್ತು ಬಿ ಹಿಡುವಳಿ ನಿಗದಿಪಡಿಸಲಾಗಿದೆ ವಿಳಾಸದಲ್ಲಿ ಜೀವಿಸುವ ವೇರಿಯಬಲ್ ಅವುಗಳನ್ನು ಶೇಖರಿಸಿಡಲು. ನಾವು ವೇರಿಯಬಲ್ ಪ್ರವೇಶ ಪಡೆಯಲು ಪರಿಣಾಮಕಾರಿಯಾಗಿ dereference ಬೌ ಎಂದು ನೀನು ಎಂದು, ಬೌ ಅದು ಹೊಂದಿರುವ ವಿಳಾಸದಲ್ಲಿ ಆಗಿದೆ ಮತ್ತು ನಾವು tmp ಇದನ್ನು ಹಿಡಿದಿರುವ ಮೌಲ್ಯವನ್ನು ವಿಷಯ ನೀನು. ಮತ್ತೊಮ್ಮೆ ಐಪ್ಯಾಡ್ ಮರಳಿ ಫ್ಲಿಪ್ಪಿಂಗ್. ನಾನು, ಇಲ್ಲಿ 2 ಈ ಮೌಲ್ಯವನ್ನು ಅಳಿಸಿಹಾಕಬಹುದು ಮತ್ತು ಬದಲಿಗೆ ನಾವು ಇದನ್ನು 1 ಬಲ ನಕಲಿಸಿ ಮಾಡುತ್ತೇವೆ. ನಂತರ ಆಫ್ ನಿರ್ವಹಿಸುವ ಮುಂದಿನ ಸಾಲು - ನಾವು ಲ್ಯಾಪ್ಟಾಪ್ ಮತ್ತೆ ತಿರುಗಿಸಿಕೊಳ್ಳುವ ವೇಳೆ - ಈ 6 ನಮ್ಮ ಚಿತ್ರದಲ್ಲಿ ಸಂಪೂರ್ಣವಾಗಿ ಭರ್ತಿ ಹೊಂದಬೇಕೆಂಬ ಆಸೆ ಬಿಂದುವನ್ನು ಇದು. ಆದ್ದರಿಂದ ಐಪ್ಯಾಡ್ ಮರಳಿ ಫ್ಲಿಪ್ಪಿಂಗ್ ಮತ್ತೊಮ್ಮೆ, ಕೇವಲ ಆದ್ದರಿಂದ ನೀವು ಪೂರ್ಣಗೊಳಿಸಿದ ಚಿತ್ರದಲ್ಲಿ ನೋಡಬಹುದು ನಾವು X ನಲ್ಲಿ ಒಂದು 10, ಬೌ ಒಂದು 14, tmp ಒಂದು 1, 2, ಮತ್ತು ವೈ ಒಂದು 1 ಎಂದು ನೋಡಬಹುದು. ಈ ಬಗ್ಗೆ ಯಾವುದೇ ಪ್ರಶ್ನೆಗಳನ್ನು ಇವೆ? ಈ ಮೂಲಕ ಸರಿದು ನಂತರ, ಹೆಚ್ಚು ಅರ್ಥ ಡಸ್? ಕಡಿಮೆ ಅರ್ಥ? ಆಶಾದಾಯಕವಾಗಿ ಅಲ್ಲ. ಸರಿ. ಪಾಯಿಂಟರ್ಸ್ ಬಹಳ ಟ್ರಿಕಿ ವಿಷಯವಾಗಿದೆ. ನಾವು ಕೆಲಸ ವ್ಯಕ್ತಿಗಳಲ್ಲಿ ಒಬ್ಬ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ಮಾತುಗಳೆಂದರೆ ಹೊಂದಿದೆ: "ಪಾಯಿಂಟರ್ಸ್ ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು, ನೀವು ಮೊದಲ ಪಾಯಿಂಟರ್ಸ್ ಅರ್ಥ ಬೇಕು." ಇದು ನಾನು ಬಹಳ ನಿಜವಾದ ಎಂದು. ಇದು ಬಳಸಲಾಗುತ್ತದೆ ತಲುಪುವ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳಬಹುದು ಮಾಡುತ್ತದೆ. ಬಹಳ ಸಹಾಯ, ಚಿತ್ರಗಳು ಚೀಟಿ ಎತ್ತುವುದು ಇಂತಹ ಮೆಮೊರಿ ಚಿತ್ರಗಳು ಸಾಕಷ್ಟು ರೇಖಾಚಿತ್ರ ಮತ್ತು ನೀವು ಉದಾಹರಣೆಗೆ ನಂತರ ಉದಾಹರಣೆಗೆ ನಂತರ ಉದಾಹರಣೆಗೆ ಸಂಚರಿಸಲು ನಂತರ, ಇದು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅರ್ಥದಲ್ಲಿ ಮತ್ತು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅರ್ಥದಲ್ಲಿ ಮತ್ತು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅರ್ಥ ಪ್ರಾರಂಭಿಸಿ. ಅಂತಿಮವಾಗಿ, ಒಂದು ದಿನ, ಅದು ಸಂಪೂರ್ಣವಾಗಿ ಮಾಸ್ಟರಿಂಗ್ ಹೊಂದಿರುತ್ತದೆ. ಮುಂದಿನ ಸಮಸ್ಯೆ ಕಡೆಗೆ? ಯಾವುದೇ ಪ್ರಶ್ನೆಗಳನ್ನು ಮೊದಲು ಎಲ್ಲಾ ಸರಿ. ಆದ್ದರಿಂದ ಲ್ಯಾಪ್ಟಾಪ್ ಮತ್ತೆ ಮೀಟು. ನಾವು ಮುಂದಿನ ಸಮಸ್ಯೆ ಸಮಸ್ಯೆ ಸಂಖ್ಯೆ 33 ಫೈಲ್ ಮೇಲೆ I / O ಈ ಸ್ವಲ್ಪ ಜೂಮ್. ಸಮಸ್ಯೆಯನ್ನು 33 - ಹೌದು? [ಡೇನಿಯಲ್] ನಾನು ಒಂದು ತ್ವರಿತ ಪ್ರಶ್ನೆ ಹೊಂದಿತ್ತು. ಈ ನಕ್ಷತ್ರ ಅಥವಾ ನಕ್ಷತ್ರ, ನೀವು ಮೊದಲು ಒಂದು ನಕ್ಷತ್ರ ಬಳಸಿದಾಗ dereferencing ಕರೆಯಲಾಗುತ್ತದೆ. ನೀವು ಮೊದಲು ವನ್ನಾಗಲಿ ಬಳಸುವಾಗ ಅದು ಯಾವ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ? >> ವನ್ನಾಗಲಿ ಮೊದಲು ವಿಳಾಸಕ್ಕೆ ಆಫ್ ಆಯೋಜಕರು ಹೊಂದಿದೆ. ಆದ್ದರಿಂದ ಅವರ ಹಿಂದಿರುಗಿ ಸ್ಕ್ರಾಲ್ ಅವಕಾಶ. ಓಹ್. ನಾನು ಇದರಿಂದ ನಿಜವಾಗಿಯೂ ಚಲನ ಅಲ್ಲ ಜೂಮ್ ಕ್ರಮದಲ್ಲಿ ಆಗಿದ್ದೇನೆ. ನಾವು ಇಲ್ಲಿಯೇ ನಿಜವಾಗಿಯೂ ವೇಗವಾಗಿ ಈ ಕೋಡ್ ನೋಡಿದರೆ, ಮತ್ತೆ ಅದೇ ವಿಷಯ ನಡೆಯುತ್ತಿದೆ. ನಾವು ಇಲ್ಲಿಯೇ ಈ ಕೋಡ್ ನೋಡಿದರೆ, ಈ ಸಾಲಿನಲ್ಲಿ ನಾವು ಕರೆ, ಸ್ವ್ಯಾಪ್ ಮಾಡಲು ಅಲ್ಲಿ ವನ್ನಾಗಲಿ ಕೇವಲ "ವಿಳಾಸಕ್ಕೆ ಇದು ವ್ಯತ್ಯಯ X ಜೀವನದಲ್ಲಿ ಪಡೆಯಿರಿ." ಹೇಳುತ್ತಾರೆ ನಿಮ್ಮ ಕಂಪೈಲರ್ ನಿಮ್ಮ ಕೋಡ್ ಸಂಗ್ರಹಿಸುತ್ತಾ ಮಾಡಿದಾಗ, ನಿಜವಾಗಿ ಭೌತಿಕವಾಗಿ ವಾಸಿಸಲು ನಿಮ್ಮ ಅಸ್ಥಿರ ಎಲ್ಲಾ ಮೆಮೊರಿ ಒಂದು ಸ್ಥಳವನ್ನು ಗುರುತಿಸಲು ಹೊಂದಿದೆ. ಎಲ್ಲವೂ ಕಂಪೈಲ್ ಒಮ್ಮೆ ಹೀಗೆ ಕಂಪೈಲರ್ ನಂತರ, ಏನು ಮಾಡಬಹುದು ಇದು "ಓಹ್, ನಾನು ವಿಳಾಸಕ್ಕೆ 10 X ಪುಟ್. ನಾನು ವಿಳಾಸಕ್ಕೆ 14 ನಲ್ಲಿ ವೈ ಪುಟ್.", ತಿಳಿದಿರುವ ನಂತರ ನೀವು ಈ ಮೌಲ್ಯಗಳನ್ನು ಭರ್ತಿ ಮಾಡಬಹುದು. ಆದ್ದರಿಂದ ನೀವು ಮಾಡಬಹುದು - ಇದು ನಂತರ ಹಾಗೆಯೇ ಮತ್ತು ಪಾಸ್ & ಲಿಸಿ ಈ ರವಾನಿಸಬಹುದು. ಈ ಹುಡುಗರಿಗೆ ವಿಳಾಸವನ್ನು ಪಡೆಯಲು, ಆದರೆ ಅವರು, ನೀವು ಸ್ವಾಪ್ ಕಾರ್ಯ ಅವುಗಳನ್ನು ರವಾನಿಸಲು ಈ ರೀತಿಯ ಮಾಹಿತಿ, ಇಲ್ಲಿಯೇ ಈ ಇಂಟ್ *, ಕಂಪೈಲರ್ ಹೇಳುತ್ತದೆ "ಸರಿ, ನಾವು ಒಂದು ಪೂರ್ಣಾಂಕ ವೇರಿಯಬಲ್ ಒಂದು ವಿಳಾಸಕ್ಕೆ ಈ ವಿಳಾಸಕ್ಕೆ ವ್ಯಾಖ್ಯಾನ ಮಾಡಲು ನೀನು." ಒಂದು ಇಂಟ್ ಒಂದು ವಿಳಾಸ, ಒಂದು ಪಾತ್ರವು ಚರಾಂಶದ ವಿಳಾಸಕ್ಕೆ ಭಿನ್ನವಾಗಿದೆ ಒಂದು ಇಂಟ್ ಒಂದು 32 ಬಿಟ್ ಗಣಕದಲ್ಲಿ, ಅಪ್ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಏಕೆಂದರೆ, ಜಾಗವನ್ನು 4 ಬೈಟ್ಗಳು ಅಪ್ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಒಂದು ಪಾತ್ರವನ್ನು ಮಾತ್ರ ಜಾಗವನ್ನು 1 ಬೈಟ್ ಅಪ್ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಆದರೆ. ಆದ್ದರಿಂದ ಅದು ಕೂಡ ತಿಳಿಯಲು ಪ್ರಮುಖ - ವಾಸಿಸುತ್ತಾರೆ ಏನು, ಮೌಲ್ಯದ ಬಗೆ ಸೈನ್ ಜಾರಿಗೆ ಕೊಂಡಿರುವ ವಿಳಾಸಕ್ಕೆ ವಾಸಿಸುತ್ತಿದ್ದ ಇದೆ ನೀವು ಮಾತಾಡುತ್ತಿದ್ದೀರಿ ಎಂದು ಅಥವಾ ವಿಳಾಸಕ್ಕೆ. ಆ ರೀತಿಯಲ್ಲಿ, ನೀವು ಎಷ್ಟು ಬೈಟ್ಗಳು ಮಾಹಿತಿಯನ್ನು ವಾಸ್ತವವಾಗಿ ನಿಮ್ಮ RAM ನ ಔಟ್ ಲೋಡ್ ತಿಳಿದಿರುವ. ತದನಂತರ, ಹೌದು, ನೀವು ರೀತಿ dereference ಆಯೋಜಕರು, ಕೇಳುತ್ತಿದ್ದರು ಹೋಗುತ್ತದೆ ಮತ್ತು ಒಂದು ನಿರ್ದಿಷ್ಟ ವಿಳಾಸದಲ್ಲಿ ಮಾಹಿತಿಯನ್ನು ಕೇಳಬಹುದು. ಆದ್ದರಿಂದ ಇಲ್ಲಿ ಈ ಒಂದು ವೇರಿಯೇಬಲ್ ಜೊತೆಗೆ, ಹೇಳುತ್ತಾರೆ, ಒಂದು ವಿಳಾಸಕ್ಕೆ ಒಂದು ವಿಷಯಗಳನ್ನು ಚಿಕಿತ್ಸೆ, ಆ ವಿಳಾಸಕ್ಕೆ ಹೋಗಿ, ಮತ್ತು ಔಟ್ ಪುಲ್, ಒಂದು ರಿಜಿಸ್ಟರ್ನಲ್ಲಿ ಪ್ರೊಸೆಸರ್, ಲೋಡ್ ಆಗಿ ಲೋಡ್ ನಿಜವಾದ ಮೌಲ್ಯಗಳನ್ನು ಅಥವಾ ವಿಳಾಸದಲ್ಲಿ ವಾಸಿಸುವ ವಿಷಯಗಳ. ಯಾವುದೇ ಪ್ರಶ್ನೆಗಳು? ಈ ಉತ್ತಮ ಪ್ರಶ್ನೆಗಳು. ಇದು ತುಂಬಾ ಹೊಸ ಪರಿಭಾಷೆ ಸಂಗತಿಯೇ. ವಿವಿಧ ಸ್ಥಳಗಳಲ್ಲಿ ಮತ್ತು ಮತ್ತು * ನೋಡಿದ ಸಹ ಮೋಜಿನ ಭಾಸವಾಗುತ್ತದೆ. ಎಲ್ಲಾ ಸರಿ. ಆದ್ದರಿಂದ ಮತ್ತೆ ಸಮಸ್ಯೆಯನ್ನು 33, ಫೈಲ್ ಐ / ಒ ನಾನು ವಸ್ತುಗಳ ಒಂದೆರಡು ಸಂಭವಿಸಿದ ಭಾವಿಸುತ್ತೇನೆ ಆ ಸಮಸ್ಯೆಗಳನ್ನು ಒಂದಾಗಿತ್ತು. ಒಂದು, ಅದು ಸಾಕಷ್ಟು ಹೊಸ ವಿಷಯ ಇಲ್ಲಿದೆ. ಇದು, ರಸಪ್ರಶ್ನೆ ಮೊದಲು ಸ್ವಲ್ಪ ಸಮಯದಲ್ಲಿಯೇ ನೀಡಲಾಯಿತು ತದನಂತರ ನಾನು ಗಣಿತ ಆ ಪದ ಸಮಸ್ಯೆಗಳನ್ನು ಒಂದು ರೀತಿಯ ರೀತಿಯ ಭಾವಿಸಿದೆವು ಅಲ್ಲಿ ಅವರು ನೀವು ಸಾಕಷ್ಟು ನೀಡಿ, ಆದರೆ ವಾಸ್ತವವಾಗಿ ಇದು ಒಂದು ಟನ್ ಬಳಸಲು ಹೊಂದಿರುವ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ ಇಲ್ಲ. ಈ ಸಮಸ್ಯೆಯ ಮೊದಲ ಭಾಗ ಒಂದು CSV ಕಡತ ಏನು ವಿವರಿಸುವ ಇದೆ. ಈಗ, ಒಂದು CSV ಕಡತ, ವಿವರಣೆ ಪ್ರಕಾರ, ಒಂದು ಅಲ್ಪವಿರಾಮ ಬೇರ್ಪಡಿಸಿದ ಮೌಲ್ಯಗಳು ಕಡತವಾಗಿರುತ್ತದೆ. ಈ ಎಲ್ಲಾ ಕುತೂಹಲಕಾರಿ ಇರುತ್ತದೆ ಕಾರಣ, ಮತ್ತು ನೀವು ಎಂದಾದರೂ ಅವುಗಳನ್ನು ಬಳಸಲು ಕಾರಣ, , ಏಕೆಂದರೆ, ನೀವು ಅನೇಕ ಹಿಂದೆಂದೂ ಎಕ್ಸೆಲ್ ಮೂಲವಸ್ತುವನ್ನು ಬಳಸಿದ್ದಾರೆ ಇದೆ? , ಬಹುಶಃ, ಅಥವಾ ನಿಮ್ಮ ಜೀವನದಲ್ಲಿ ಕೆಲವು ಹಂತದಲ್ಲಿ ಬಳಸುತ್ತದೆ ನೀವು ಅತ್ಯಂತ ಚಿತ್ರ. ನೀವು ಎಕ್ಸೆಲ್ ರೀತಿಯ ಬಳಸಿ. ಒಂದು ಎಕ್ಸೆಲ್ ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಮಾಹಿತಿ ಪಡೆಯಲು ಅಥವಾ ಅದರೊಂದಿಗೆ ಪ್ರಕ್ರಿಯೆಗೆ ಯಾವುದೇ ರೀತಿಯ ಮಾಡಲು, ನೀವು ಒಂದು ಸಿ ಪ್ರೋಗ್ರಾಂ ಅಥವಾ ಪೈಥಾನ್ ಪ್ರೊಗ್ರಾಮ್, ಜಾವಾ ಪ್ರೋಗ್ರಾಮ್, ಬರೆಯಲು ಬಯಸಿದರೆ ನೀವು ಸಂಗ್ರಹಿಸಲಾದ ದತ್ತಾಂಶ ವ್ಯವಹರಿಸಲು, ಇದನ್ನು ಪಡೆಯಲು ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ವಿಧಾನಗಳಲ್ಲಿ ಒಂದು CSV ಕಡತ ರಲ್ಲಿ ಆಗಿದೆ. ನೀವು, ಸಂಭಾಷಣೆ 'ಅಂತೆ ಉಳಿಸು' ಹೋದಾಗ ಮತ್ತು ನೀವು ಎಕ್ಸೆಲ್ ತೆರೆಯುತ್ತದೆ ಮತ್ತು ಮಾಡಬಹುದು ನೀವು ನಿಜವಾದ CSV ಕಡತ ಔಟ್ ಪಡೆಯುವುದು. ಈ ವಿಷಯಗಳನ್ನು ಹೇಗೆ ತಿಳಿಯಲು ಹ್ಯಾಂಡಿ. ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವಿಧಾನದಲ್ಲಿ ಅದು ಹೋಲುತ್ತದೆ ಎಂದು ಹೊಂದಿದೆ - ನನ್ನ ಪ್ರಕಾರ, ಇದು ಮೂಲಭೂತವಾಗಿ, ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಅನುಕರಿಸುವ ವಿಶೇಷವೇನು ಅಲ್ಲಿ, ನಾವು ಇಲ್ಲಿ ನೋಡಿ ಎಂದು, ತುಂಬಾ ಬಿಟ್ಟು ಅತ್ಯಂತ ತುಣುಕು, ನಾವು ಕೊನೆಯ ಹೆಸರು. ನಾವು ನಂತರ Malan, Hardison, ತದನಂತರ ಬೌಡೆನ್, MacWilliam, ಮತ್ತು ನಂತರ ಚಾನ್ ಹೊಂದಿರುತ್ತವೆ. ಎಲ್ಲಾ ಕೊನೆಯ ಹೆಸರುಗಳು. ಮತ್ತು ನಂತರ ಒಂದು ಅಲ್ಪವಿರಾಮ ಮೊದಲ ಹೆಸರುಗಳನ್ನು ಕೊನೆಯ ಹೆಸರುಗಳು ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ. ಡೇವಿಡ್, ನೇಟ್, ರಾಬ್, ಟಾಮಿ, ಮತ್ತು Zamyla. ನಾನು ಯಾವಾಗಲೂ ರಾಬಿ ಮತ್ತು ಟಾಮ್ ಅಪ್ ಮಿಶ್ರಣ. ನಂತರ, ಅಂತಿಮವಾಗಿ ಮೂರನೇ ಕಾಲಮ್ ಇಮೇಲ್ ವಿಳಾಸಗಳನ್ನು ಹೊಂದಿದೆ. ನೀವು ಅರ್ಥ ಒಮ್ಮೆ, ಕಾರ್ಯಕ್ರಮದ ಉಳಿದ ಕಾರ್ಯಗತಗೊಳಿಸಲು ತಕ್ಕಮಟ್ಟಿಗೆ ನೇರವಾಗಿರುತ್ತದೆ. ನಮ್ಮ ಸಿ ಕಾರ್ಯಕ್ರಮದಲ್ಲಿ ಇದೇ ವಿನ್ಯಾಸವನ್ನು ಅನುಕರಿಸುವ ಸಲುವಾಗಿ ಮಾಡಿದ ಏನು ನಾವು ಒಂದು ರಚನೆ ಬಳಸಲಾಗುತ್ತದೆ ಮಾಡಿದ ಇದೆ. ನಾವು ಹಾಗೆಯೇ ಈ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಆಟವಾಡಿ ಮಾಡುತ್ತೇವೆ. ನಾವು ನಿಘಂಟುಗಳು ವ್ಯವಹರಿಸುವ ಸಂದರ್ಭದಲ್ಲಿ ಸಮಸ್ಯೆ ಸೆಟ್ 3, ಮೊದಲ ಸ್ವಲ್ಪ ಅವುಗಳನ್ನು ಕಂಡಿತು. ಆದರೆ ಈ ಸಿಬ್ಬಂದಿ struct ಕೊನೆಯ ಹೆಸರು, ಮೊದಲ ಹೆಸರು ಮತ್ತು ಇಮೇಲ್ ಸಂಗ್ರಹಿಸುತ್ತದೆ. ನಮ್ಮ CSV ಕಡತ ರೀತಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸುವ ಮಾಡಲಾಯಿತು. ಆದ್ದರಿಂದ ಈ ಒಂದು ರೂಪದಲ್ಲಿ ಇನ್ನೊಂದಕ್ಕೆ ಪರಿವರ್ತಿಸುವ ಇದೆ. ನಾವು, ಒಂದು ಮಾರ್ಗ, ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಒಂದು ಸಿಬ್ಬಂದಿ struct ಪರಿವರ್ತಿಸಲು ಹೊಂದಿವೆ ಕೇವಲ ಒಂದು ಅಲ್ಪವಿರಾಮ ಬೇರ್ಪಡಿಸಿದ ಲೈನ್. ಎಂದು ಅರ್ಥ ಡಸ್? ನೀವು ಹುಡುಗರಿಗೆ ಎಲ್ಲಾ ರಸಪ್ರಶ್ನೆ ತೆಗೆದುಕೊಂಡು, ಎಂದು ಆದ್ದರಿಂದ ನಾನು ನೀವು ಕನಿಷ್ಟ ಈ ಬಗ್ಗೆ ಯೋಚಿಸುವುದು ಕೆಲವು ಸಮಯ ಇನ್ನೂ ಕಲ್ಪನೆ. ಬಾಡಿಗೆ ಕಾರ್ಯದಲ್ಲಿ, ಸಮಸ್ಯೆಯನ್ನು ನಾವು ತೆಗೆದುಕೊಳ್ಳಲು ಕೇಳುತ್ತದೆ - ಈ ಸ್ವಲ್ಪ ಮೇಲೆ we'll ಜೂಮ್ - , ಹೆಸರು ರು ಜೊತೆ, ಸಿಬ್ಬಂದಿ ವಿನ್ಯಾಸ, ಸಿಬ್ಬಂದಿ struct ಕೈಗೊಳ್ಳಬೇಕಾದ ಮತ್ತು ನಮ್ಮ staff.csv ಕಡತವನ್ನು ಅದರ ವಿಷಯಗಳನ್ನು ಸೇರಿಸಲು. ಇದು ಬಳಸಲು ಸಾಕಷ್ಟು ನೇರ ಎಂದು ಔಟ್ ಆರಂಭಿಸುತ್ತದೆ. ನಾವು ರೀತಿಯ ಸ್ವಲ್ಪ ಈ ಕಾರ್ಯಗಳನ್ನು ಇಂದು ಸುಮಾರು ಆಡಲು ಮಾಡುತ್ತೇವೆ. ಆದರೆ ಈ ಸಂದರ್ಭದಲ್ಲಿ, fprintf ಕಾರ್ಯ ನಿಜಕ್ಕೂ ಕೀಲಿಯಾಗಿದೆ. ಆದ್ದರಿಂದ fprintf ಜೊತೆಗೆ, ನಾವು ನೀವು ಹುಡುಗರಿಗೆ printf ಇಡೀ ಪದವನ್ನು ಬಳಸಲಾಗುತ್ತಿದೆ ರೀತಿಯಲ್ಲಿಯೇ, ಮುದ್ರಿಸಬಹುದು. ನೀವು ಒಂದು ಕಡತವನ್ನು printf ಒಂದು ಸಾಲಿನ ಮಾಡಬಹುದು. ಬದಲಾಗಿ ಕೇವಲ ಸಾಮಾನ್ಯ printf ಕರೆ ಮಾಡುವ ಆದ್ದರಿಂದ ನೀವು ಸ್ವರೂಪ ಸ್ಟ್ರಿಂಗ್ ನೀಡಿ ಅಲ್ಲಿ ತದನಂತರ ನೀವು ಕೆಳಗಿನ ವಾದಗಳನ್ನು ಎಲ್ಲಾ ವ್ಯತ್ಯಾಸಗಳ ಬದಲಿಗೆ fprintf ಜೊತೆಗೆ, ನಿಮ್ಮ ಮೊದಲ ವಾದವನ್ನು ಬದಲಿಗೆ ನೀವು ಬರೆಯಲು ಬಯಸುವ ಫೈಲ್ ಆಗಿದೆ. ನಾವು, ಮಾನವ fprintf, ಉದಾಹರಣೆಗೆ, ಉಪಕರಣಗಳಲ್ಲಿರುವ ಈ ನೋಡಲು ಬಂದಾಗ ನಾವು printf ಮತ್ತು fprintf ನಡುವೆ ವ್ಯತ್ಯಾಸವನ್ನು ನೋಡಬಹುದು. ನಾನು ಇಲ್ಲಿ ಸ್ವಲ್ಪ ಜೂಮ್ ಮಾಡುತ್ತೇವೆ. Printf ಹೊಂದಿರುವ ಆದ್ದರಿಂದ, ನಾವು ಒಂದು ಸ್ವರೂಪ ಸ್ಟ್ರಿಂಗ್ ನೀಡಿ, ತದನಂತರ ಮುಂದಿನ ವಾದಗಳು ನಮ್ಮ ಸ್ವರೂಪ ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ಬದಲಾವಣೆ ಅಥವಾ ಪರ್ಯಾಯ ಎಲ್ಲಾ ಚರಗಳಾಗಿವೆ. Fprintf ಹೊಂದಿರುವ ಆದರೆ, ಮೊದಲ ವಾದವು ವಾಸ್ತವವಾಗಿ ಒಂದು ಹರಿವು ಎನ್ನುವರು ಈ ಫೈಲ್ * ಹೊಂದಿದೆ. ನಮ್ಮ ಬಾಡಿಗೆ ಇಲ್ಲಿ ಮೇಲೆ ಹಿಂದಕ್ಕೆ ಚಲಿಸುವ ನಾವು ಈಗಾಗಲೇ ನಮ್ಮ ಫೈಲ್ * ಸ್ಟ್ರೀಮ್ ನಮಗೆ ತೆರೆಯಿತು ಮಾಡಲೇಬೇಕು. ಆ ನ ಈ ಮೊದಲ ಲೈನ್ ಏನು ಇದು staff.csv ಕಡತವನ್ನು ತೆರೆಯುತ್ತದೆ, ಇದು ಸೇರ್ಪಡಿಸಲಾದ ಕ್ರಮದಲ್ಲಿ ಇದು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ಮತ್ತು ಹಾಗೆ ಮಾಡಲು ಎಡಭಾಗದ ಎಲ್ಲಾ ಹೊಂದಿದೆ ಕಡತದ ಸಿಬ್ಬಂದಿ ರಚನೆಯ ಬರೆಯಲು. ಮತ್ತು, ನಾನು ಐಪ್ಯಾಡ್ ಬಳಸಲು ಬಯಸುತ್ತಾರೆ, ನೋಡೋಣ? ನಾನು ಐಪ್ಯಾಡ್ ಬಳಸಿ. ನಾವು ಶೂನ್ಯವನ್ನು ಹೊಂದಿವೆ - ನಾನು ಸ್ವಲ್ಪ ಉತ್ತಮ ಬರೆಯಬಹುದು ಹಾಗೆ ಮೇಜಿನ ಮೇಲೆ ಈ ಪುಟ್ ನೋಡೋಣ - ಬಾಡಿಗೆ ಶೂನ್ಯವಾಗುವ ಮತ್ತು, ಒಂದು ವಾದದಲ್ಲಿನ ರು ಎಂಬ ಸಿಬ್ಬಂದಿ ರಚನೆ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನಮ್ಮ ಕಟ್ಟುಪಟ್ಟಿಗಳು ಗಾಟ್, ನಾವು, ಕಡತ ಎಂದು ನಮ್ಮ ಫೈಲ್ * ಪಡೆದಿರುವಿರಿ ನಾವು, ನಮಗೆ ನೀಡಿರುವ ನಮ್ಮ fopen ಲೈನ್ ಹೊಂದಿವೆ ಇದು pedia ಈಗಾಗಲೇ ರಿಂದ ಮತ್ತು ನಾನು ಚುಕ್ಕೆಗಳು ಎಂದು ಬರೆಯಲು ಮಾಡುತ್ತೇವೆ. ನಂತರ ನಮ್ಮ ಮುಂದಿನ ಸಾಲಿನಲ್ಲಿ, ನಾವು fprintf ಗೆ ಕರೆ ಮಾಡಲು ನೀನು ಮತ್ತು ನಾವು, ನಾವು ಮುದ್ರಿಸಲು ಬಯಸುವ ಕಡತದಲ್ಲಿ ರವಾನಿಸಲು ನೀನು ತದನಂತರ ನಮ್ಮ ಸ್ವರೂಪ ಸ್ಟ್ರಿಂಗ್, ಇದು - ನಾನು ನೀವು ಹುಡುಗರಿಗೆ ಇದು ಕಾಣುತ್ತದೆ ಹೇಳಿ ತಿಳಿಸುತ್ತೇವೆ. ಹೇಗೆ ನೀವು, ಸ್ಟೆಲ್ಲಾ? ನೀವು ಸ್ವರೂಪ ಸ್ಟ್ರಿಂಗ್ ಮೊದಲ ಭಾಗವಾಗಿ ಕಾಣುತ್ತದೆ ಏನು ಗೊತ್ತೇ? [ಸ್ಟೆಲ್ಲಾ] ನಾನು ಖಚಿತವಿಲ್ಲ. >> ಜಿಮ್ಮಿ ಕೇಳಲು ಹಿಂಜರಿಯಬೇಡಿ. ನೀವು, ಜಿಮ್ಮಿ ತಿಳಿಯುವುದು? [ಜಿಮ್ಮಿ] ಇದು ಕೇವಲ ಕೊನೆಯ ಬಯಸುವಿರಾ? ನನಗೆ ಗೊತ್ತಿಲ್ಲ. ನಾನು ಸಂಪೂರ್ಣವಾಗಿ ಖಚಿತವಿಲ್ಲ. ಸರಿ >>. ಹೇಗೆ, ಯಾರೇ ಪರೀಕ್ಷೆಯಲ್ಲಿ ಈ ಸರಿಯಾದ ಬಂದೆವು? ಆಲ್ ರೈಟ್ ನಂ. ಇಲ್ಲಿ ನಾವು ಎಲ್ಲಾ ನಮ್ಮ ಸಿಬ್ಬಂದಿ ರಚನೆಯ ಪ್ರತಿ ಭಾಗವನ್ನು ಬಯಸುವ ಎಂದು ತಿರುಗಿದರೆ ನಮ್ಮ ಫೈಲ್ ಒಂದು ಸ್ಟ್ರಿಂಗ್ ಎಂದು ಔಟ್ ಮುದ್ರಿತವಾಗಬಹುದು. ನಾವು ಕೊನೆಯ ಹೆಸರು ಏಕೆಂದರೆ ನಾವು ಸ್ಟ್ರಿಂಗ್ ಪರ್ಯಾಯ ಅಕ್ಷರ ಮೂರು ವಿವಿಧ ಬಾರಿ ಬಳಸಲು ಅಲ್ಪವಿರಾಮ ನಂತರ, ನಂತರ ಮೊದಲ ಹೆಸರು, ಚಿಹ್ನೆಗಳಿಂದ ನಂತರ ತದನಂತರ ಅಂತಿಮವಾಗಿ ಇದು ಇಮೇಲ್ ವಿಳಾಸಕ್ಕೆ ನಂತರ - ಇರುವಂತಹ ನನ್ನ ತೆರೆಯಲ್ಲಿ ಅಳವಡಿಸುವುದಿಲ್ಲ - ಆದರೆ ಒಂದು ಹೊಸಸಾಲು ಪಾತ್ರಕ್ಕೆ ಅನುಸರಿಸಿದರು. ಆದ್ದರಿಂದ ನಾನು ಕೆಳಗೆ ಅದನ್ನು ಬರೆಯಲು ಪಡೆಯಲಿದ್ದೇನೆ. ತದನಂತರ, ನಮ್ಮ ಸ್ವರೂಪ ಸ್ಟ್ರಿಂಗ್ ನಂತರ ನಾವು ನಾವು ಡಾಟ್ ಸಂಕೇತಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರವೇಶಿಸಲು ಇದು ಬದಲಿ ಹೊಂದಿವೆ ನಾವು ಸಮಸ್ಯೆಯನ್ನು ಸೆಟ್ 3 ರಲ್ಲಿ ಕಂಡರು. ನಾವು s.last, s.first, ಮತ್ತು s.email ಬಳಸಬಹುದು ನಮ್ಮ ಸ್ವರೂಪ ಸ್ಟ್ರಿಂಗ್ ಇಂತಹ ಮೂರು ಮೌಲ್ಯಗಳನ್ನು ಬದಲಿಗೆ. ಆದ್ದರಿಂದ ಹೇಗೆ ಹೋಗಿವೆ? ಅರ್ಥ? ಹೌದು? ಇಲ್ಲ? ಬಹುಶಃ? ಸರಿ. ನಾವು ಮುದ್ರಿತ ನೀವು ಮತ್ತು ನಾವು ನಮ್ಮ ಫೈಲ್ ತೆರೆಯಿತು ಮಾಡಿದ ನಂತರ ನಂತರ ನಾವು ಮಾಡುವ ಅಂತಿಮ ವಿಷಯ: ನಾವು ಒಂದು ಕಡತ ತೆರೆಯಿತು ಇಲ್ಲಿಗೆ ಬಂದಾಗಲೆಲ್ಲಾ, ನಾವು ಯಾವಾಗಲೂ ಮುಚ್ಚಲು ನೆನಪಿಡುವ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ. ಇಲ್ಲದಿದ್ದರೆ ನಾವು ಮೆಮೊರಿ ಸೋರಿಕೆ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ ಮಾಡುತ್ತೇವೆ ಏಕೆಂದರೆ, ಫೈಲ್ ವಿವರಣೆಗಳ ಉಪಯೋಗಿಸಿ. ನಾವು ಯಾವ ಕಾರ್ಯ ಬಳಸುವುದು, ಅದನ್ನು ಮುಚ್ಚಲು? ಡೇನಿಯಲ್? [ಡೇನಿಯಲ್] fclose? ನಿಖರವಾಗಿ >> fclose. ಆದ್ದರಿಂದ ಈ ಸಮಸ್ಯೆಯನ್ನು ಕೊನೆಯ ಭಾಗವಾಗಿದೆ, fclose ಕಾರ್ಯಕಾರಿತ್ವ ಬಳಸಿಕೊಂಡು, ಫೈಲ್ ಸರಿಯಾಗಿ ಮುಚ್ಚಿ ಆಗಿತ್ತು ಇದು ಕೇವಲ ಎಂದು ತೋರುತ್ತಿದೆ. ತುಂಬಾ ಕ್ರೇಜಿ ಅಲ್ಲ. ಕೂಲ್. ಆದ್ದರಿಂದ ರಸಪ್ರಶ್ನೆ ಮೇಲೆ ಸಮಸ್ಯೆಯನ್ನು 33 ಇಲ್ಲಿದೆ. ನಾವು I / O ಮುಂಬರುವ ಖಂಡಿತವಾಗಿಯೂ ಹೆಚ್ಚು ಕಡತವನ್ನು ಹೊಂದಿರುತ್ತದೆ. ನಾವು, ಇಂದು ಇಂದು ಉಪನ್ಯಾಸ ಒಂದು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಮಾಡಲು, ಅಥವಾ ವಿಭಾಗದಲ್ಲಿ ವಿಲ್ ಈ ಮುಂಬರುವ pset ಬಹುಭಾಗವು ರಚಿಸಲು ಏನು ನಡೆಯುತ್ತಿದೆ, ಏಕೆಂದರೆ. ನ ಈ ಹಂತದಲ್ಲಿ ರಸಪ್ರಶ್ನೆ ಮೇಲೆ ಚಲಿಸೋಣ. ಹೌದು? [ಷಾರ್ಲೆಟ್]] ವೈ ಬದಲಿಗೆ fclose ಆಫ್ fclose (ಕಡತ) (staff.csv)? >> ಆಹ್. ಆ ತಿರುಗಿದರೆ ಕಾರಣ - ಹೀಗೆ ಪ್ರಶ್ನೆ, ಒಂದು ದೊಡ್ಡ ಒಂದು ಇದು, ಏಕೆ, ನಾವು fclose ಬರೆಯಲು ನಾವು fclose (ಕಡತ) ಸ್ಟಾರ್ ವೇರಿಯಬಲ್ ಬರವಣಿಗೆಯಲ್ಲಿ ಇದೆ ಕಡತದ ಹೆಸರು, staff.csv ವಿರುದ್ಧವಾಗಿ? ಅದು ಸರಿಯೇ? ಹೌದು. ಆದ್ದರಿಂದ ಅವರ ಅವಲೋಕಿಸೋಣ. ನನ್ನ ಲ್ಯಾಪ್ಟಾಪ್ ಹಿಂದಿರುಗಿ ವೇಳೆ, ಮತ್ತು ಅವರ fclose ಕಾರ್ಯವನ್ನು ನೋಡೋಣ. ಆದ್ದರಿಂದ, fclose ಕ್ರಿಯೆಯ ಒಂದು ಸ್ಟ್ರೀಮ್ ಮುಚ್ಚಲ್ಪಡುತ್ತದೆ ಮತ್ತು ನಾವು ಮುಚ್ಚಲು ಬಯಸುವ ಸ್ಟ್ರೀಮ್ಗೆ ದಿಕ್ಸೂಚಕ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಎಂದು ನಾವು ಮುಚ್ಚಲು ಬಯಸುವ ವಾಸ್ತವಿಕ ಕಡತ ಹೆಸರು ವಿರೋಧಿಸಿದರು. ಮತ್ತು ಈ ಕಾರಣದಿಂದಾಗಿ ತೆರೆಮರೆಯಲ್ಲಿ, ನೀವು fopen ಒಂದು ಕರೆ ಮಾಡಿದಾಗ, ಆಗಿದೆ ನೀವು ಒಂದು ಫೈಲ್ ಅನ್ನು ತೆರೆದಾಗ, ನೀವು ವಾಸ್ತವವಾಗಿ ಫೈಲ್ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸಲು ಮೆಮೊರಿ ಹಂಚುತ್ತಾರೆ ಮಾಡುತ್ತಿದ್ದೇವೆ. ಆದ್ದರಿಂದ ನೀವು ಕಡತದ ಬಗೆಗಿನ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿರುವ ಕಡತವನ್ನು ಪಾಯಿಂಟರ್ ಹೊಂದಿವೆ ಅದನ್ನು ತೆರೆಯಲು ಉದಾಹರಣೆಗೆ, ನೀವು ಫೈಲ್ ಪ್ರಸ್ತುತ ಅಲ್ಲಿ ಅದರ ಗಾತ್ರ, ನೀವು ಓದಲು ಮತ್ತು ಕಡತ ಒಳಗೆ ನಿರ್ದಿಷ್ಟ ಸ್ಥಳಕ್ಕೆ ಕರೆಗಳು ಬರೆಯಲು ಇದರಿಂದ. ಬದಲಾಗಿ ನೀವು ಫೈಲ್ ಹೆಸರು ಮುಚ್ಚುವ ಪಾಯಿಂಟರ್ ಮುಚ್ಚುವ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ. ಹೌದು? [ಡೇನಿಯಲ್] ಆದ್ದರಿಂದ ಬಾಡಿಗೆ ಬಳಸಲು, ನೀವು ಹೇಳಬಹುದು - ಹೇಗೆ ಬಳಕೆದಾರ ಇನ್ಪುಟ್ ಪಡೆಯಲು ಮಾಡುತ್ತದೆ? Fprintf ಕೇವಲ ಬಳಕೆದಾರ ಇನ್ಪುಟ್ ನಿರೀಕ್ಷಿಸಿ ಮಾಡುತ್ತೇವೆ ಎಂಬ ಅರ್ಥದಲ್ಲಿ GetString ವರ್ತಿಸುತ್ತಾರೆ ಡಸ್ ಮತ್ತು ನೀವು ಈ ಟೈಪಿಸಲು ಕೇಳಿ - ಅಥವಾ ನೀವು ಈ ಮೂರು ವಿಷಯಗಳನ್ನು ಟೈಪಿಸಿ ನಿರೀಕ್ಷಿಸಿ? ಅಥವಾ ನೀವು ಬಾಡಿಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಏನೋ ಬಳಸಲು ಬೇಕು? >> ಹೌದು. ನಾವು ಇಲ್ಲ - ಪ್ರಶ್ನೆ, ಹೇಗೆ ನಾವು ಬಳಕೆದಾರ ಇನ್ಪುಟ್ ಸಿಗುತ್ತವೆ ಮಾಡಲಾಯಿತು ಬಾಡಿಗೆ ಜಾರಿಗೆ ಸಲುವಾಗಿ? ಮತ್ತು ಇಲ್ಲಿರುವುದು, ಬಾಡಿಗೆ ಆಫ್ ಕಾಲರ್ ಆಗಿದೆ ಈಗಾಗಲೇ struct ಸಂಗ್ರಹವಾಗಿರುವ ಡೇಟಾವನ್ನು ಈ ಸಿಬ್ಬಂದಿ struct ರಲ್ಲಿ ಅನುಮೋದಿಸಿತು. ಆದ್ದರಿಂದ fprintf ಕೇವಲ ಕಡತ ನೇರವಾಗಿ ಡೇಟಾವನ್ನು ಬರೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಯಾವುದೇ ಬಳಕೆದಾರ ಇನ್ಪುಟ್ ಕಾಯುತ್ತಿರುವ ಇಲ್ಲ. ಬಳಕೆದಾರ ಈಗಾಗಲೇ ಸರಿಯಾಗಿ ಈ ಸಿಬ್ಬಂದಿ struct ನಲ್ಲಿ ಹಾಕುವ ಮೂಲಕ ಇನ್ಪುಟ್ ನೀಡಿದ ನ. ಆ ಪಾಯಿಂಟರ್ಗಳ ಯಾವುದೇ ಶೂನ್ಯ ವೇಳೆ ಮತ್ತು ವಿಷಯಗಳು, ಕೋರ್ಸ್, ಮುರಿಯಬಲ್ಲ ಆದ್ದರಿಂದ ನಾವು ಇಲ್ಲಿ ಮತ್ತೆ ಸ್ಕ್ರಾಲ್ ಮತ್ತು ನಮ್ಮ struct ನೋಡಲು. ನಾವು ಸ್ಟ್ರಿಂಗ್ ಕೊನೆಯ ವಾಕ್ಯವನ್ನು ಮೊದಲ, ಸ್ಟ್ರಿಂಗ್ ಇಮೇಲ್ ಹೊಂದಿರುತ್ತವೆ. ನಾವು ಈಗ ಆ ನಿಜವಾಗಿಯೂ ಎಲ್ಲಾ HOOD ಅಡಿಯಲ್ಲಿ, ಚಾರ್ * ಚರಗಳಾಗಿವೆ ತಿಳಿದಿದೆ. ಆ ಶೂನ್ಯ ತೋರುತ್ತಿರುವಂತೆ ಇರಬಹುದು ಅಥವಾ. ಅವರು, ರಾಶಿ ಮೆಮೊರಿಯ ತೋರುತ್ತಿರುವಂತೆ ಮಾಡಬಹುದು ಸ್ಟಾಕ್ ಮೇಲೆ ಬಹುಶಃ ಮೆಮೊರಿ. ನಾವು ನಿಜವಾಗಿ, ಆದರೆ ಈ ಪಾಯಿಂಟರ್ಗಳ ಯಾವುದೇ ಶೂನ್ಯ, ಅಥವಾ ಅಮಾನ್ಯವಾಗಿದೆ ವೇಳೆ, ಇಲ್ಲ ಖಂಡಿತವಾಗಿಯೂ ನಮ್ಮ ಬಾಡಿಗೆ ಕಾರ್ಯ ಕುಸಿತಕ್ಕೆ ಮಾಡುತ್ತೇವೆ ಆ. ಆ ಪರೀಕ್ಷೆಯಲ್ಲಿ ವ್ಯಾಪ್ತಿಯನ್ನು ಮೀರಿ ರೀತಿಯ ಎಂದು ಏನೋ. ನಾವು ಚಿಂತಿಸುತ್ತಿರುತ್ತಿದ್ದನು ಇಲ್ಲ. ಗ್ರೇಟ್. ಸರಿ. ಆದ್ದರಿಂದ ರಸಪ್ರಶ್ನೆ ಮೇಲೆ ಚಲಿಸುವ. ನ ಈ ವ್ಯಕ್ತಿ ಮುಚ್ಚಿ ಅವಕಾಶ, ಮತ್ತು ನಾವು pset 4 ನೋಡಲು ನೀನು. ನೀವು ಹುಡುಗರಿಗೆ pset ವಿಶೇಷ ನೋಡಲು ಆದ್ದರಿಂದ, ಒಮ್ಮೆ ನೀವು ಪ್ರವೇಶಿಸಬಹುದು, cs50.net/quizzes, ನಾವು ವಿಭಾಗ ಸಮಸ್ಯೆಗಳು ಇಂದು ಕೆಲವು ಮೂಲಕ ಹೋಗುತ್ತಿದ್ದೇವೆ. ನಾನು ಕೆಳಗೆ ಸ್ಕ್ರೋಲ್ ನಾನು - ಪ್ರಶ್ನೆಗಳನ್ನು ವಿಭಾಗ pset ಸ್ಪೆಕ್ನ ಮೂರನೇ ಪುಟದಲ್ಲಿ ಆರಂಭವಾಗುತ್ತದೆ. ಮತ್ತು ಮೊದಲ ಭಾಗವಾಗಿ ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ ಮತ್ತು ಪೈಪುಗಳ ಮೇಲೆ ಹೋಗಿ ಸಣ್ಣ ವೀಕ್ಷಿಸಲು ನೀವು ಕೇಳುತ್ತದೆ. ತಂಪಾದ ಸಣ್ಣ ರೀತಿಯ ಇದು, ನೀವು ಬಳಸಬಹುದಾದ ಕೆಲವು ಹೊಸ ತಂಪು ಆಜ್ಞಾ ಸಾಲಿನ ಟ್ರಿಕ್ಸ್ ತೋರಿಸುತ್ತದೆ. ನಂತರ ನಾವು ಮತ್ತು ನೀವು ಕೆಲವು ಪ್ರಶ್ನೆಗಳನ್ನು ಮಾಡಲೇಬೇಕು. ತೊರೆಗಳು ಬಗ್ಗೆ ಈ ಮೊದಲ ಪ್ರಶ್ನೆ, printf ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಬರೆಯುತ್ತಾರೆ ಯಾವ, ನಾವು ರೀತಿಯ ಕೊಂಚ ಹಿಂದೆ ಸ್ವಲ್ಪ ಮೇಲೆ ಮುಟ್ಟಲಿಲ್ಲ. ನಾವು ಚರ್ಚಿಸುತ್ತಿದ್ದಾರೆ ಎಂದು ಈ fprintf ಅದರ ಚರ್ಚೆಯಂತೆ ಫೈಲ್ * ಸ್ಟ್ರೀಮ್ನಲ್ಲಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. fclose, ಹಾಗೆಯೇ ಒಂದು ಕಡತ * ಸ್ಟ್ರೀಮ್ನಲ್ಲಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು fopen ಆಫ್ ಮರಳುವ ಮೌಲ್ಯವನ್ನು ಹಾಗು ನೀವು ಕಡತವನ್ನು * ಸ್ಟ್ರೀಮ್ ನೀಡುತ್ತದೆ. ನಾವು printf ವ್ಯವಹರಿಸಿದೆ ನಾವು ನಾವು ಮೊದಲು ಆ ನೋಡಿಲ್ಲ ಕಾರಣ printf ಒಂದು ಡೀಫಾಲ್ಟ್ ಸ್ಟ್ರೀಮ್ ಹೊಂದಿದೆ ಏಕೆಂದರೆ. ಮತ್ತು ಅದನ್ನು ಬರೆಯುತ್ತಾರೆ ಯಾವ ಡೀಫಾಲ್ಟ್ ಸ್ಟ್ರೀಮ್ ನೀವು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಬಗ್ಗೆ ಕಾಣುವಿರಿ. ಆದ್ದರಿಂದ ಖಂಡಿತವಾಗಿ ಇದು ನೋಡೋಣ. ಇಂದಿನ ವಿಭಾಗದಲ್ಲಿ, ನಾವು, GDB ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಮಾತನಾಡಲು ನೀನು ಹೆಚ್ಚು ಪರಿಚಿತ ನೀವು ಹೊಂದಿರುವ ಕಾರಣ, ಹೆಚ್ಚು ಅಭ್ಯಾಸ ನೀವು, ಅದನ್ನು ಪಡೆಯಲು ಸಮರ್ಥವಾಗಿರುತ್ತವೆ ನೀವು ನಿಜವಾಗಿಯೂ ನಿಮ್ಮ ಸ್ವಂತ ಕೋಡ್ ನ್ಯೂನತೆಗಳನ್ನು ಬೇಟೆಯಾಡಲು ಇರುವಿರಿ. ಈ ಮಹತ್ತರವಾಗಿ ಅಪ್ ಡೀಬಗ್ ಪ್ರಕ್ರಿಯೆಯ ವೇಗವನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ. ಆದ್ದರಿಂದ printf ಬಳಸಿಕೊಂಡು, ಪ್ರತಿ ಬಾರಿ ನೀವು ನಿಮ್ಮ ಕೋಡ್ ಮರುಸಂಕಲಿಕೆಯು ಮಾಡಬೇಕು ಹಾಗೆ ನೀವು ಮತ್ತೆ ಚಲಾಯಿಸಲು ಹೊಂದಿರುತ್ತವೆ, ಕೆಲವೊಮ್ಮೆ ನೀವು, ಸುಮಾರು printf ಕರೆ ಸ್ಥಳಾಂತರಿಸಲು ಕೋಡ್ ಔಟ್ ಕಾಮೆಂಟ್, ಇದು ಕೇವಲ ಸ್ವಲ್ಪ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನಮ್ಮ ಗುರಿ ಪ್ರಯತ್ನಿಸಿ ಮತ್ತು GDB ಜೊತೆಗೆ, ನೀವು ಮೂಲಭೂತವಾಗಿ ಎಂಬುದನ್ನು ನೀವು ಮನವರಿಕೆ ಮಾಡುವುದು printf ನಿಮ್ಮ ಕೋಡ್ ಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಏನು ಮತ್ತು ನೀವು ಮರುಸಂಕಲಿಕೆಯು ಯಾವತ್ತೂ. ನೀವು ಆರಂಭಿಸಲು ಮತ್ತು ಅಲ್ಲಿ printf ಮುಂದಿನ ಊಹೆ ಇರಿಸಿಕೊಳ್ಳಲು ಎಂದಿಗೂ. ಮಾಡಲು ಮೊದಲನೆಯದಾಗಿ ಈ ಸಾಲಿನ ನಕಲಿಸಿ ಮತ್ತು ವೆಬ್ ನ ವಿಭಾಗ ಕೋಡ್ ಆಫ್ ಪಡೆಯುವುದು. ನಾನು "wget ​​http://cdn.cs50.net" ಹೇಳುತ್ತದೆ ಕೋಡ್ ಈ ಸಾಲನ್ನು ನಕಲು ನುಡಿದರು. ನಾನು ನಕಲಿಸುವುದು ಪಡೆಯಲಿದ್ದೇನೆ. ನನ್ನ APPLIANCE ಮೇಲೆ ಹೋಗುತ್ತಿದ್ದೇವೆ ಭಾವಿಸುತ್ತೇನೆ, ಆದ್ದರಿಂದ, ನಾನು ಏನು ಮಾಡುತ್ತಿರುವೆ ನೋಡಬಹುದು ಝೂಮ್ ಔಟ್ ಹಾಗಾದರೆ ಇದು ಅಂಟಿಸುವುದು, ಮತ್ತು ನಾನು ನಮೂದಿಸಿ ಹೊಡೆದಾಗ, ಈ wget ಆಜ್ಞೆಯನ್ನು ಅಕ್ಷರಶಃ ವೆಬ್ ಪಡೆಯಲು ಆಗಿದೆ. ಇದು ಇಂಟರ್ನೆಟ್ ಈ ಫೈಲ್ ಆಫ್ ಕೆಳಗೆ ಎಳೆಯಲು ವಿಶೇಷವೇನು ಮತ್ತು ಪ್ರಸಕ್ತ ಕೋಶವನ್ನು ಅದನ್ನು ಉಳಿಸಲು ವಿಶೇಷವೇನು. ನನ್ನ ಪ್ರಸ್ತುತ ಕೋಶದ ಪಟ್ಟಿ ವೇಳೆ ಈಗ ನೀವು ನಾನು ಅಲ್ಲಿಗೆ ಈ section5.zip ಕಡತ ಮಾಡಲೇಬೇಕು ಎಂದು ನೋಡಬಹುದು. ಆ ವ್ಯಕ್ತಿ ವ್ಯವಹರಿಸುವ ರೀತಿ, ಇದು ಅನ್ಜಿಪ್ ಆಗಿದೆ ಇದು ನೀವು ಈ ರೀತಿಯಲ್ಲಿ, ಆಜ್ಞಾ ಮಾಡಬಹುದು. Section5.zip. ಇದು ಅನ್ಜಿಪ್ ಮಾಡುತ್ತೇವೆ ಎಂದು, ನನಗೆ ಫೋಲ್ಡರ್ ರಚಿಸಿ ಎಲ್ಲಾ ವಿಷಯಗಳನ್ನು ಹಣದುಬ್ಬರ, ಅಲ್ಲಿ ಅವುಗಳನ್ನು ಪುಟ್. ಈಗ ನಾನು CD ಆಜ್ಞೆಯನ್ನು ಬಳಸಿಕೊಂಡು ನನ್ನ ವಿಭಾಗವು 5 ಕೋಶಕ್ಕೆ ಹೋಗಬಹುದು. ಸ್ಪಷ್ಟ ಬಳಸಿ ಪರದೆಯ ತೆರವುಗೊಳಿಸಿ. ಆದ್ದರಿಂದ ಪರದೆಯ ತೆರವುಗೊಳಿಸಿ. ಈಗ ನಾನು ವ್ಯವಹರಿಸಲು ಉತ್ತಮ ಕ್ಲೀನ್ ಟರ್ಮಿನಲ್ ಮಾಡಲೇಬೇಕು. ನಾನು ಈ ಕೋಶದಲ್ಲಿ ನೋಡಿ ಎಲ್ಲಾ ಕಡತಗಳನ್ನು ಪಟ್ಟಿ ಈಗ ವೇಳೆ buggy1, buggy2, buggy3, ಮತ್ತು buggy4: ನೀವು ನಾಲ್ಕು ಫೈಲ್ಗಳನ್ನು ಮಾಡಲೇಬೇಕು ಎಂದು ನೋಡಿ. ನಾನು ಅವುಗಳ. ಸಿ ಕಡತಗಳನ್ನು ಮಾಡಲೇಬೇಕು. ನಾವು ಈಗ. ಸಿ ಕಡತಗಳನ್ನು ನೋಡಲು ಹೋಗುತ್ತಿಲ್ಲ. ಬದಲಾಗಿ, ನಾವು GDB ತೆರೆಯುತ್ತದೆ ಅವುಗಳನ್ನು ಬಳಸಲು ನೀನು. ನಾವು GDB ಬಳಸುತ್ತಿರುವ ನಾವು, ನಾವು ನಿಜವಾದ ಮೂಲ ಕೋಡ್ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿರುತ್ತದೆ ಕೂರಲು ಸುಮಾರು ಇದ್ದರು ನಾವು ಆದರೆ ವಿಭಾಗ ಈ ಭಾಗದ ಗೋಲು GDB ಜೊತೆ ಸುಮಾರು ಟಿಂಕರ್ ಮಾಡುವುದು ಮತ್ತು ಈ ನಾಲ್ಕು ದೋಷಯುಕ್ತ ಕಾರ್ಯಕ್ರಮಗಳನ್ನು ಪ್ರತಿಯೊಂದು ತಪ್ಪು ಏನು ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು ಊಹಿಸಲು ಬಳಸಬಹುದು ಎಂಬುದನ್ನು ನೋಡಿ. ಆದ್ದರಿಂದ ನಾವು, ನಿಜವಾಗಿಯೂ ವೇಗವಾಗಿ ಕೋಣೆಯ ಸುತ್ತಲೂ ಎಂದು ನೀನು ಮತ್ತು ನಾನು, ದೋಷಯುಕ್ತ ಕಾರ್ಯಕ್ರಮಗಳ ಒಂದು ರನ್ ಯಾರಾದರೂ ಕೇಳಲು ಪಡೆಯಲಿದ್ದೇನೆ ನಂತರ, ನಾವು GDB ಮೂಲಕ ಗುಂಪು ಹೋಗುತ್ತೇನೆ, ಮತ್ತು ನಾವು ಈ ಕಾರ್ಯಕ್ರಮಗಳು ಸರಿಪಡಿಸಲು ಏನು ಮಾಡಬಹುದು ನೋಡುತ್ತಾರೆ ಅಥವಾ ಕನಿಷ್ಠ ಅವುಗಳಲ್ಲಿ ಒಂದು ತಪ್ಪು ಏನು ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು ಗುರುತಿಸಲು. ಡೇನಿಯಲ್ ಇಲ್ಲಿ ಮೇಲೆ ಆರಂಭಿಸೋಣ. ನೀವು buggy1 ರನ್ ಕಾಣಿಸುತ್ತದೆ? ಏನಾಗುತ್ತದೆ ಎಂದು ನೋಡೋಣ. [ಡೇನಿಯಲ್] ಇದು ಅಪ್ಲಿಕೇಶನ್ ತಪ್ಪು ಇಲ್ಲ ಹೇಳುತ್ತಾರೆ. >> ಹೌದು. ನಿಖರವಾಗಿ. ನಾನು buggy1 ರನ್ ಆದ್ದರಿಂದ, ನಾನು seg ತಪ್ಪು ಪಡೆಯಲು. ಈ ಸಮಯದಲ್ಲಿ, ನಾನು ಹೋಗಿ buggy1.c ತೆರೆಯುತ್ತದೆ ಸಾಧ್ಯವಾಗಲಿಲ್ಲ , ಪ್ರಯತ್ನಿಸಿ ಮತ್ತು ತಪ್ಪು ವಿಶೇಷವೇನು ಏನೆಂದು ಲೆಕ್ಕಾಚಾರ ಆದರೆ ಈ seg ತಪ್ಪು ದೋಷ ಬಗ್ಗೆ ಅತ್ಯಂತ ಹೇಸಿಗೆಯ ವಸ್ತುಗಳ ಒಂದು ಯೋಜನೆಯನ್ನು ವಸ್ತುಗಳ ಲೈನ್ ವಾಸ್ತವವಾಗಿ ತಪ್ಪಾಗಿದೆ ಮತ್ತು ಮುರಿಯಿತು ಏನನ್ನು ಹೇಳಲು ಅದು ಹೊಂದಿದೆ. ನೀವು ರೀತಿಯ ಕೋಡ್ ನೋಡಲು ಹೊಂದಿವೆ ಮತ್ತು ಊಹೆ ಬಳಸಿ ಲೆಕ್ಕಾಚಾರ ಮತ್ತು ಪರಿಶೀಲಿಸಿ ಅಥವಾ printf ತಪ್ಪು ಏನು ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೋಡಲು. GDB ಬಗ್ಗೆ ಉತ್ತಮ ಕೆಲಸವೆಂದರೆ ಅದು ನಿಜವಾಗಿಯೂ ಸುಲಭ ಎಂದು ಲೈನ್ ಔಟ್ ಲೆಕ್ಕಾಚಾರ ನಿಮ್ಮ ಪ್ರೊಗ್ರಾಂ ಕುಸಿತಗೊಂಡಾಗ ನಲ್ಲಿ. ಇದು ಸಂಪೂರ್ಣವಾಗಿ ಕೇವಲ ಆ ವೇಳೆ, ಇದು ಬಳಸಲು ಉಚಿತ. ಆದ್ದರಿಂದ GDB ಬೂಟ್ ನಾನು GDB ನಮೂದಿಸಿ, ಮತ್ತು ನಂತರ ನಾನು ಚಲಾಯಿಸಲು ಬಯಸುವ ಕಾರ್ಯಗತಗೊಳ್ಳುವ ಅದನ್ನು ಮಾರ್ಗವನ್ನು ನೀಡುತ್ತವೆ. ಇಲ್ಲಿ ನಾನು GDB ./buggy1 ಟೈಪ್ ನುಡಿದರು. Enter ಒತ್ತಿರಿ. , ನನಗೆ ಈ ಹಕ್ಕುಸ್ವಾಮ್ಯ ಮಾಹಿತಿ ನೀಡುತ್ತದೆ ಮತ್ತು ಕೆಳಗೆ ಇಲ್ಲಿ ನೀವು ", / home / ಇಂದ ಓದುವಿಕೆ ಚಿಹ್ನೆಗಳನ್ನು ಹೇಳುತ್ತದೆ ಈ ಸಾಲಿನ ನೋಡುತ್ತಾರೆ jharvard/section5/buggy1. " ಎಲ್ಲಾ ಚೆನ್ನಾಗಿ ಹೋದಲ್ಲಿ ಮತ್ತು, ನೀವು ಈ ತೋರುತ್ತಿದೆ ಒಂದು ಸಂದೇಶವನ್ನು ಮುದ್ರಿಸುತ್ತದೆ ನೋಡುತ್ತಾರೆ. ಚಿಹ್ನೆಗಳನ್ನು ನೀವು ಓದಲು, ಅದು "ನಾನು, ನಿಮ್ಮ ಫೈಲ್ ಸಂಕೇತಗಳಿಂದ ಓದುವ ನಾನು" ಹೇಳುತ್ತೇನೆ ನಂತರ ಇಲ್ಲಿ ಈ "ಮಾಡಲಾಗಿದೆ" ಸಂದೇಶವನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಈ ಕೆಲವು ವ್ಯತ್ಯಯ ನೋಡಿ, ಅಥವಾ ನೀವು ನೋಡಲು ವೇಳೆ ಚಿಹ್ನೆಗಳನ್ನು ಹುಡುಕಲಾಗಲಿಲ್ಲ ಅಥವಾ ಹಾಗೆ ಏನೋ, ಏನು ಅರ್ಥ ನೀವು ಸರಿಯಾಗಿ ನಿಮ್ಮ ಕಾರ್ಯಗತಗೊಳಿಸಬಲ್ಲ ಕಂಪೈಲ್ ಮಾಡಿರದ ಹೊಂದಿರುತ್ತವೆ. ನಾವು GDB ಉಪಯೋಗಿಸಲು ಕಾರ್ಯಕ್ರಮಗಳು ಕಂಪೈಲ್ ಮಾಡುವಾಗ, ನಾವು, ಆ ವಿಶೇಷ ಗ್ರಾಂ ಧ್ವಜ ಬಳಸಬೇಕು ನಿಮ್ಮ ಕಾರ್ಯಕ್ರಮಗಳು ಕಂಪೈಲ್ ವೇಳೆ ಮತ್ತು ಕೇವಲ ಮಾಡಲು ನಮೂದಿಸುವ ಮೂಲಕ, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ನಿಲ್ಲಿಸುವುದಾಗಿ ಅಥವಾ ದೋಷಯುಕ್ತ ಮಾಡಲು ಅಥವಾ ಆ ಯಾವುದೇ ಗುಣಮುಖನಾಗಿಸಬಹುದು. ಆದರೆ ನೀವು ಖಣಿಲು ಜೊತೆಗೆ ಕೈಯಿಂದ ಕಂಪೈಲ್ ಬಳಸುತ್ತಿದ್ದರೆ, ಆಗ ನೀವು ಹೋಗಿ ಎಂದು-G ಧ್ವಜ ಸೇರಿವೆ ಮಾಡಬೇಕಾಗಬಹುದು. ಈ ಹಂತದಲ್ಲಿ, ಈಗ ನಮ್ಮ GDB ಪ್ರಾಂಪ್ಟಿನಲ್ಲಿ, ಎಂದು ಇದು ಪ್ರೊಗ್ರಾಮನ್ನು ಬಹಳ ಸರಳ. ನಾವು ಎರಡೂ ರನ್ ಟೈಪ್ ಮಾಡಬಹುದು, ಅಥವಾ ನಾವು R ಟೈಪ್ ಮಾಡಬಹುದು. ಅತ್ಯಂತ GDB ಆಜ್ಞೆಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತ ಮಾಡಬಹುದು. ಸಾಮಾನ್ಯವಾಗಿ ಬಹಳ ಸಂತೋಷವನ್ನು ಇದು ಕೇವಲ ಒಂದು ಅಥವಾ ಕೆಲವು ಅಕ್ಷರಗಳು, ಗೆ. ನೀವು R ಟೈಪ್ ಮತ್ತು ಏನಾಗುತ್ತದೆ, ನಮೂದಿಸಿ ಹಿಟ್ ಆದ್ದರಿಂದ, ಸಾದ್? [ಸಾದ್] ನಾನು SIGSEGV, ವಿಭಜನೆ ತಪ್ಪು, ತದನಂತರ ಈ gobbledygook ದೊರೆತಿದೆ. >> ಹೌದು. ಇದೀಗ ತೆರೆಯ ಮೇಲೆ ಕಾಣಿಸುವ ಮಾಡುತ್ತಿರುವಂತೆ, ಮತ್ತು ಸಾದ್ ಹೇಳಿದರು ಹಾಗೆ, ನಾವು ರನ್ ಅಥವಾ R ಟೈಪಿಸಿ ಮತ್ತು Enter ಹೊಡೆದಾಗ, ನಾವು ಅದೇ seg ತಪ್ಪು ಪಡೆಯಲು. ಆದ್ದರಿಂದ GDB ಬಳಸಿಕೊಂಡು ನಮ್ಮ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವುದಿಲ್ಲ. ಆದರೆ ನಮಗೆ ಕೆಲವು gobbledygook ನೀಡುತ್ತದೆ, ಮತ್ತು ಇದು ತಿರುಗಿದರೆ ಈ gobbledygook ಇದು ನಡೆಯುತ್ತಿದೆ ಅಲ್ಲಿ ವಾಸ್ತವವಾಗಿ ನಮಗೆ ಹೇಳುತ್ತದೆ. ಈ ಸ್ವಲ್ಪ ಪಾರ್ಸ್ ಮಾಡಲು, ಈ ಮೊದಲ ಬಿಟ್ ಎಲ್ಲವೂ ತಪ್ಪು ವಿಶೇಷವೇನು ಇದರಲ್ಲಿ ಕಾರ್ಯ. ಈ __ strcmp_sse4_2, ಮತ್ತು ಅದನ್ನು ಈ ಕಡತದಲ್ಲಿ ನಡೆಯುತ್ತಿದೆ ಎಂದು ನಮಗೆ ಹೇಳುತ್ತದೆ sysdeps/i386 ಕರೆಯಲಾಗುತ್ತದೆ, ಈ, ಮತ್ತೆ, ಒಂದು ಅವ್ಯವಸ್ಥೆ ರೀತಿಯ - ಆದರೆ ಲೈನ್ 254. ಆ ಪಾರ್ಸ್ ಮಾಡಲು ರೀತಿಯ ಕಷ್ಟ. ನೀವು ಈ ಮೂಲವಸ್ತುವನ್ನು ನೋಡುತ್ತಿದ್ದಂತೆಯೇ ಸಾಮಾನ್ಯವಾಗಿ ಇದು ವ್ಯವಸ್ಥೆಯ ಲೈಬ್ರರಿಗಳನ್ನು ಒಂದು ದೋಷವ್ಯವಸ್ಥೆಯು seg ಎಂದು ಅರ್ಥ. ಆದ್ದರಿಂದ ಏನಾದರೂ strcmp ಮಾಡಬೇಕಾಗುತ್ತದೆ. ನೀವು ಹುಡುಗರಿಗೆ ಮೊದಲು strcmp ನೋಡಿದ್ದೇವೆ. ತುಂಬಾ ಕ್ರೇಜಿ, ಆದರೆ ಈ strcmp strcmp ಸಮಸ್ಯೆ ಇಲ್ಲ ಎಂದು ಮುರಿದು ಅಥವಾ ನಿಗದಿಪಡಿಸಲಾಗಿದೆ ಅರ್ಥವೇನು? ನೀವು, ಅಲೆಕ್ಸಾಂಡರ್ ಏನು ಆಲೋಚಿಸುತ್ತೀರಿ ಏನು? [ಅಲೆಕ್ಸಾಂಡರ್] ಎಂಬುದು - 254 ರೇಖೆ? ಮತ್ತು - ಅಲ್ಲ ಅವಳಿ, ಆದರೆ ತಮ್ಮ CEILINGS ಅಲ್ಲ, ತದನಂತರ ಪ್ರತಿ ಕ್ರಿಯೆಯ ಇನ್ನೊಂದು ಭಾಷೆ ಇಲ್ಲ. - ಆ ಕಾರ್ಯದಲ್ಲಿ 254, ಅಥವಾ? >> ಇದು ಸಾಲಿನ 254 ನ. ಈ. ರು ಕಡತದಲ್ಲಿ ತೋರುತ್ತಿದೆ, ಬಹುಶಃ ಅದು ಅಸೆಂಬ್ಲಿ ಕೋಡ್ ಆದ್ದರಿಂದ. ಆದರೆ, ನಾನು, ನಾವು seg ತಪ್ಪು ನೆತ್ತಿಗೇರಿದೆ ನೀವು ಏಕೆಂದರೆ ಹೆಚ್ಚು ಗಹನವಾದ ವಿಷಯ, ಊಹಿಸಿದರು ಮತ್ತು strcmp ಕಾರ್ಯವನ್ನು ಬರುವ ಕಾಣುತ್ತಿಲ್ಲ, ಈ ಸೂಚಿಸುತ್ತದೆ ಇಲ್ಲ, ನಂತರ, ಆ strcmp ಮುರಿದಿದೆ? ಇದು ಆಶಾದಾಯಕ, ಮಾಡಬಾರದು. ನೀವು ಒಂದು ಸೆಗ್ಮೆಂಟೇಶನ್ ದೋಷಕ್ಕೆ ಅವಕಾಶವಿದೆ ಕೇವಲ ವ್ಯವಸ್ಥೆಯ ಕ್ರಿಯೆಗಳನ್ನು ಒಂದು, ಸಾಮಾನ್ಯವಾಗಿ ನೀವು ಕೇವಲ ಸರಿಯಾಗಿ ಇದನ್ನು ಮಾಡಿಲ್ಲ ಎಂದರ್ಥ. ನಿಜವಾಗಿ ಇಂದಿನ ವಿಶೇಷವೇನು ಔಟ್ ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ತ್ವರಿತ ವಿಷಯ ನೀವು seg ತಪ್ಪು ನೋಡಿ ಬಂದಾಗಲೆಲ್ಲಾ ಇಂತಹ ಕ್ರೇಜಿ ಏನೋ, ನೋಡಿದಾಗ, ನೀವು ಹೆಚ್ಚು ಕೇವಲ ಮುಖ್ಯ ಬಳಸಿಕೊಂಡು ಎಂದು ಒಂದು ಪ್ರೋಗ್ರಾಂ ವಿಶೇಷವಾಗಿ ಒಂದು backtrace ಬಳಸುವುದು. ನಾನು ಪೂರ್ಣ backtrace ಪದ ವಿರುದ್ಧವಾಗಿ, BT ಬರೆದು backtrace ಮೊಟಕಾದ. ಆದರೆ ಷಾರ್ಲೆಟ್, ನೀವು BT ಟೈಪ್ ಮತ್ತು ಹಿಟ್ ನಮೂದಿಸಿ ಏನಾಗುತ್ತದೆ? [ಷಾರ್ಲೆಟ್] ಇದು ನನ್ನ ಎರಡು ರೇಖೆಗಳು, ಲೈನ್ 0 ಮತ್ತು ಲೈನ್ 1 ತೋರಿಸುತ್ತದೆ. >> ಹೌದು. ಆದ್ದರಿಂದ ಲೈನ್ 0 ಮತ್ತು ಲೈನ್ 1. ಈ ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂ ಕುಸಿತಗೊಂಡಾಗ ನಾಟಕದಲ್ಲಿ ಪ್ರಸ್ತುತ ಎಂದು ನಿಜವಾದ ಸ್ಟಾಕ್ ಚೌಕಟ್ಟುಗಳು ಇವೆ. ತುತ್ತತುದಿಯ ಫ್ರೇಮ್, ಫ್ರೇಮ್ 0 ಆರಂಭಿಸಿ, ಮತ್ತು ಫ್ರೇಮ್ 1 ಇದು, ಅತ್ಯಂತ ಕೆಳ ಹೋಗಿ. ನಮ್ಮ ಉನ್ನತವಾದ ಫ್ರೇಮ್ strcmp ಚೌಕಟ್ಟನ್ನು ಹೊಂದಿದೆ. ನೀವು ಈ ನಾವು ಪಾಯಿಂಟರ್ಸ್ ಜೊತೆ ರಸಪ್ರಶ್ನೆ ಮೇಲೆ ಮಾಡುತ್ತಿಲ್ಲ ಎಂದು ಸಮಸ್ಯೆಗೆ ರೀತಿಯ ನಗರದ ಅಲ್ಲಿ ನಾವು, ಮುಖ್ಯ ಸ್ಟಾಕ್ ಚೌಕಟ್ಟಿನ ಮೇಲೆ ಸ್ಟಾಕ್ ಫ್ರೇಮ್ ಸ್ವ್ಯಾಪ್ ಮಾಡಿದ ಮತ್ತು ನಾವು ಸ್ವಾಪ್ ಮುಖ್ಯ ಬಳಸಿಕೊಂಡು ಎಂದು ಚರಾಂಕಗಳ ಮೇಲೆ ಬಳಸಿ ಎಂದು ಚರಾಂಕಗಳ ಹೊಂದಿತ್ತು. ಇಲ್ಲಿ ನಮ್ಮ ಕ್ರ್ಯಾಶ್ ನಮ್ಮ ಮುಖ್ಯ ಕಾರ್ಯ ಎಂದು ಇದು ನಮ್ಮ strcmp ಫಂಕ್ಷನ್, ನಡೆದ ಮತ್ತು backtrace ನಮಗೆ ವಿಷಯಗಳನ್ನು ವಿಫಲವಾದ ಕಾರ್ಯಗಳನ್ನು ಕೇವಲ ನೀಡುವ ಇದೆ, ಎಲ್ಲವುಗಳಿಂದ ಎಂಬ ಅಲ್ಲಿ ಸಹ ನಮಗೆ ಹೇಳುವ ನ. ನಾನು ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಮೇಲೆ ಸ್ಕ್ರಾಲ್, ಆದ್ದರಿಂದ ನಾವು ಹೌದು, ನಾವು ಈ strcmp-sse4.s ಕಡತದ ಸಾಲು 254 ಮೇಲೆ ಎಂದು ನೋಡಬಹುದು. ಆದರೆ ಕರೆ buggy1.c, ಲೈನ್ 6 ನಲ್ಲಿ ಮಾಡಲಾಯಿತು. ನಾವು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ನಡೆಯುತ್ತಿರುವುದರ ನೋಡಿ ಹೋಗಿ ಆಗಿದೆ - ನಾವು ಮಾಡಬಹುದು ಅರ್ಥ, ಆದ್ದರಿಂದ buggy1.c, ಲೈನ್ 6. ಮತ್ತೆ, ಈ ಮಾಡಲು ಒಂದೆರಡು ಮಾರ್ಗಗಳಿವೆ. ಒಂದು GDB ಹೊರಗೆ ನಿರ್ಗಮಿಸಲು ಆಗಿದೆ ಅಥವಾ ನಿಮ್ಮ ಕೋಡ್ ಇನ್ನೊಂದು ವಿಂಡೋದಲ್ಲಿ ಮತ್ತು ಅಡ್ಡ ಉಲ್ಲೇಖಿಸುತ್ತದೆ ತೆರೆದುಕೊಂಡಿವೆ. ಈಗ ನೀವು ಆಫೀಸ್ ಅವರ್ಸ್ ಇಂತಹ ಏಕೆಂದರೆ, ಮತ್ತು ಸ್ವತಃ, ಬಹಳ HANDY ಆಗಿದೆ ಮತ್ತು ನೀವು seg ತಪ್ಪು ಪಡೆದಿರುವಿರಿ ಮತ್ತು ಎಲ್ಲವನ್ನೂ ಬ್ರೇಕಿಂಗ್ ಅಲ್ಲಿ ನಿಮ್ಮ TF, ಚಕಿತಗೊಳಿಸುತ್ತದೆ ವಿಶೇಷವೇನು ನೀವು ಕೇವಲ "ಓಹ್, ಲೈನ್ 6, ಹೇಳಬಹುದು. ನಾನು, ಇಂದಿನ ವಿಶೇಷವೇನು ಏನು ಗೊತ್ತಿಲ್ಲ ಆದರೆ ಲೈನ್ 6 ಬಗ್ಗೆ ಏನೋ ನನ್ನ ಪ್ರೋಗ್ರಾಂ ಮುರಿಯಲು ಕಾರಣವಾಯಿತು ಇದೆ. " ಇದನ್ನು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ನೀವು GDB ಪಟ್ಟಿ ಎಂಬ ಈ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ ಹೊಂದಿದೆ. ನೀವು L ಇದನ್ನು ಚಿಕ್ಕದಾದ ಮಾಡಬಹುದು. ನಾವು L ಹಿಟ್ ಆದ್ದರಿಂದ, ನಾವು ಏನು ಸಿಗುತ್ತದೆ? ನಾವು ವಿಲಕ್ಷಣ ಸ್ಟಫ್ ಒಂದು ಇಡೀ ಗುಂಪೇ ಪಡೆಯಿರಿ. ಈ ನಿಜವಾದ ಅಸೆಂಬ್ಲಿ ಸಂಕೇತಗಳನ್ನು ಆ strcmp_sse4_2 ರಲ್ಲಿ ಆಗಿದೆ. ಈ, ಮೋಜಿನ ರೀತಿಯ ಕಾಣುತ್ತದೆ ಮತ್ತು ನಾವು ಈ ಬರುತ್ತಿದೆ ಕಾರಣ, ಇದೀಗ ಏಕೆಂದರೆ GDB ಫ್ರೇಮ್ 0 ನಮಗೆ ಹೊಂದಿದೆ. ಆದ್ದರಿಂದ ಯಾವುದೇ ನಾವು ನೋಡಲು ಅಸ್ಥಿರ ನಲ್ಲಿ, ನಾವು ಮೂಲ ಕೋಡ್ ನೋಡಲು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ, ನಾವು ಸ್ಟಾಕ್ ಫ್ರೇಮ್ ಸಂಬಂಧಿಸಿದೆ ನಾವು ಸೈನ್ ಪ್ರಸ್ತುತ ಎಂಬುದನ್ನು ಮೂಲ ಕೋಡ್ ನಲ್ಲಿ ಹುಡುಕುತ್ತಿರುವ ಆದ್ದರಿಂದ ಅರ್ಥಪೂರ್ಣ ಏನು ಪಡೆಯುವ ಸಲುವಾಗಿ, ನಾವು ಹೊಂದಿಲ್ಲ ಹೆಚ್ಚು ಅರ್ಥವನ್ನು ನೀಡುವ ಒಂದು ಸ್ಟಾಕ್ ಫ್ರೇಮ್ ಸರಿಸಲು. ಈ ಪ್ರಕರಣದಲ್ಲಿ, ಮುಖ್ಯ ಸ್ಟಾಕ್ ಫ್ರೇಮ್, ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅರ್ಥ ಎಂದು ಎಂದು ವಾಸ್ತವವಾಗಿ ನಾವು ಬರೆದ ಕೋಡ್ ಕಾರಣ. ಮಾಡಿರುವುದಿಲ್ಲ strcmp ಕೋಡ್. ನಾವು ಎರಡು ಕಾರಣ ನೀವು, ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಫ್ರೇಮ್ಗಳ ನಡುವೆ ಚಲಿಸುವ ರೀತಿಯಲ್ಲಿ, ನಾವು, 0 ಮತ್ತು 1 ಹೊಂದಿವೆ ನೀವು ಅಪ್ ಮತ್ತು ಡೌನ್ ಆಜ್ಞೆಗಳನ್ನು ಹೊಂದಿರುವ ಹಾಗೆ. ನಾನು ಒಂದು ಚೌಕಟ್ಟು, ಇರುತ್ತದೆ ವೇಳೆ ಈಗ ನಾನು ಮುಖ್ಯ ಸ್ಟಾಕ್ ಚೌಕಟ್ಟಿನಲ್ಲಿ ಆಗಿದ್ದೇನೆ. ನಾನು, ನಾನು ಅಲ್ಲಿ ಮರಳಲು ಕೆಳಗೆ ಚಲಿಸಬಹುದು ಮತ್ತೆ ಹೋಗಿ, ಮತ್ತೆ ಕೆಳಗೆ ಹೋಗಿ, ಮತ್ತು ಮತ್ತೆ ಹೋಗಿ. ನೀವು ಎಂದಾದರೂ GDB ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂ, ನೀವು ಕುಸಿತದ ಪಡೆಯಲು, ನೀವು, backtrace ಪಡೆಯಿರಿ ಮತ್ತು ನೀವು ನೀವು ಏನು ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು ತಿಳಿದಿಲ್ಲ ಎಂದು ಕೆಲವು ಕಡತದಲ್ಲಿ ಎಂದು ನೋಡಿ. ನೀವು ಪಟ್ಟಿಯಿಂದ ಪ್ರಯತ್ನಿಸಿ, ಕೋಡ್, ನಿಮಗೆ ಪರಿಚಯವಿರುವ ತೋರುತ್ತಿಲ್ಲ ನಿಮ್ಮ ಚೌಕಟ್ಟುಗಳು ನೋಡೋಣ ಮತ್ತು ನೀವು ಅಲ್ಲಿ ಔಟ್ ಲೆಕ್ಕಾಚಾರ. ನೀವು ತಪ್ಪು ಸ್ಟಾಕ್ ಚೌಕಟ್ಟಿನಲ್ಲಿ ಬಹುಶಃ ಆರ್. ಅಥವಾ ಕನಿಷ್ಠ ನೀವು ನಿಜವಾಗಿಯೂ ದೋಷ ಹೊಂದಿರುತ್ತದೆ ಎಂಬುದನ್ನು ಒಂದು ಸ್ಟಾಕ್ ಚೌಕಟ್ಟಿನಲ್ಲಿ ಆರ್. ಈಗ ನಾವು ಸೂಕ್ತ ಸ್ಟಾಕ್ ಚೌಕಟ್ಟಿನಲ್ಲಿ ಕಾರಣ, ನಾವು, ಮುಖ್ಯ ಮಾಡುತ್ತೇವೆ ಈಗ ನಾವು ರೀತಿಯಾಗಿತ್ತು ಏನೆಂದು ಲೆಕ್ಕಾಚಾರ ಪಟ್ಟಿಯನ್ನು ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ. ಮತ್ತು ನೀವು ನೋಡಬಹುದು; ಅದು ಇಲ್ಲಿಯೇ ನಮಗೆ ಅದು ಪ್ರಕಟಿಸಿತು. ಆದರೆ ಒಂದೇ ಪಟ್ಟಿ ಹೊಡೆಯಬಹುದು, ಮತ್ತು ಪಟ್ಟಿಯು ಈ ಸಂತೋಷವನ್ನು ಪ್ರಿಂಟ್ ಔಟ್ ನೀಡುತ್ತದೆ ಇಲ್ಲಿ ನಡೆಯುತ್ತಿದೆ ಎಂದು ನಿಜವಾದ ಮೂಲ ಕೋಡ್. ನಿರ್ದಿಷ್ಟವಾಗಿ, ನಾವು ಲೈನ್ 6 ನೋಡಬಹುದು. ನಾವು ಇಲ್ಲಿ ಏನು ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೋಡಬಹುದು. ನಾವು ಒಂದು ಸ್ಟ್ರಿಂಗ್ ಹೋಲಿಕೆ ಮಾಡುವ ಮಾಡುತ್ತಿರುವಂತೆ ಮತ್ತು ಕಾಣುತ್ತದೆ ಸ್ಟ್ರಿಂಗ್ "CS50 ಕಲ್ಲುಗಳು" ಮತ್ತು argv ನಡುವೆ [1]. ಈ ಬಗ್ಗೆ ಏನಾದರೂ ಅಸಾಮಾನ್ಯ ಮಾಡಲಾಯಿತು. ಮಿಸ್ಸಿ ಆದ್ದರಿಂದ, ನೀವು ಇಲ್ಲಿ ಇಂದಿನ ಇರಬಹುದು ಯಾವುದೇ ಆಲೋಚನೆಗಳು ಹೊಂದಿಲ್ಲ? [ಮಿಸ್ಸಿ] ಇದು ಅಸಾಧಾರಣ ಎಂಬುದನ್ನು ನನಗೆ ಗೊತ್ತಿಲ್ಲ. ಇದು ಅಸಾಧಾರಣ ಎಂಬುದನ್ನು >> ನೀವು ಗೊತ್ತಿಲ್ಲ? ಜಿಮ್ಮಿ, ಯಾವುದೇ ಆಲೋಚನೆಗಳು? [ಜಿಮ್ಮಿ] ನಾನು ಸಂಪೂರ್ಣವಾಗಿ ಖಚಿತವಿಲ್ಲ, ಆದರೆ ಸ್ಟ್ರಿಂಗ್ ಬಳಸಲಾಗುತ್ತದೆ ಕಳೆದ ಬಾರಿಗೆ ಹೋಲಿಸಿದರೆ, ಅಥವಾ strcmp, ನಾವು ಅಡಿಯಲ್ಲಿ ಮೂರು ವಿವಿಧ ಸಂದರ್ಭಗಳಲ್ಲಿ ನಂತಹ ಹೊಂದಿತ್ತು. ನಾವು == ಹೊಂದಿಲ್ಲ, ನಾನು ಮೊದಲ ಸಾಲಿನಲ್ಲಿ, ಯೋಚಿಸುವುದಿಲ್ಲ. ಬದಲಿಗೆ ಇದು, ಮೂರು ಪ್ರತ್ಯೇಕಿಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಒಂದು == 0 ಆಗಿತ್ತು ಒಂದು <0, ನಾನು ಭಾವಿಸುತ್ತೇನೆ, ಮತ್ತು ಒಂದು> 0. ಹಾಗೆ ಆದ್ದರಿಂದ ಬಹುಶಃ ಏನೋ? >> ಹೌದು. ಆದ್ದರಿಂದ ಈ ಸಮಸ್ಯೆ ಇಲ್ಲ ಆಫ್ ನಾವು ಸರಿಯಾಗಿ ಹೋಲಿಕೆ ಮಾಡುತ್ತಿದ್ದಾರೆ? ಸ್ಟೆಲ್ಲಾ? ಯಾವುದೇ ಆಲೋಚನೆಗಳು? [ಸ್ಟೆಲ್ಲಾ] ನಾನು ಖಚಿತವಿಲ್ಲ. >> ಖಚಿತವಾಗಿಲ್ಲ. ಡೇನಿಯಲ್? ಆಲೋಚನೆಗಳು? ಸರಿ. ನಾವು ಕಾರ್ಯಕ್ರಮವನ್ನು ನಿರ್ವಹಿಸಿದ ಏನು ಇಲ್ಲಿಯೇ ನಡೆಯುತ್ತಿದೆ ಹೊಂದಿದೆ ತಿರುಗಿದರೆ ನೀವು ಮೊದಲ ಬಾರಿಗೆ ಕಾರ್ಯಕ್ರಮ, ಡೇನಿಯಲ್, ನಡೆಸುತ್ತಿದ್ದರು ಮತ್ತು ನಾವು, seg ತಪ್ಪು ದೊರೆತಿದೆ ನೀವು ಯಾವುದೇ ಆಜ್ಞಾ ಸಾಲಿನ ಆರ್ಗುಮೆಂಟ್ಗಳನ್ನು ನೀಡಿಲ್ಲ? [ಡೇನಿಯಲ್] ನಂ >> ನಂ ಆ ಸಂದರ್ಭದಲ್ಲಿ, argv ಮೌಲ್ಯವನ್ನು ಏನು [1]? >> ಯಾವುದೇ ಮೌಲ್ಯವನ್ನು ಇಲ್ಲ. >> ರೈಟ್. ಅಲ್ಲದೆ, ಯಾವುದೇ ಸರಿಯಾದ ಸ್ಟ್ರಿಂಗ್ ಮೌಲ್ಯ ಇರುತ್ತದೆ. ಆದರೆ ಕೆಲವು ಮೌಲ್ಯ ಇರುತ್ತದೆ. ಅಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಗಳಿಸುವ ಮೌಲ್ಯವನ್ನು ಏನು? >> ಒಂದು ಕಸದ ಮೌಲ್ಯ? ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಯಾವುದೇ ಒಂದು ಕಸದ ಮೌಲ್ಯ ಅಥವಾ >>, argv ರಚನೆಯ ಕೊನೆಯಲ್ಲಿ ಯಾವಾಗಲೂ ಶೂನ್ಯ ಮೂಲಕ ಅಂತ್ಯಗೊಳ್ಳುತ್ತದೆ. ಆದ್ದರಿಂದ ಯಾವ ವಾಸ್ತವವಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ ಪಡೆದುಕೊಂಡಿದೆ ಶೂನ್ಯ ಇಲ್ಲ. ಇತರ ರೀತಿಯಲ್ಲಿ, ಬದಲಿಗೆ ಅದರ ಮೂಲಕ ಆಲೋಚನೆ ಹೆಚ್ಚು, ಈ ಪರಿಹರಿಸಲು ಅದನ್ನು ಮುದ್ರಿಸುವ ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ನಾನು, GDB ಬಳಸಿಕೊಂಡು ಮಹಾನ್ ಎಂದು ಹೇಳಿಕೆಯ ಅಲ್ಲಿ ಇದು ನೀವು ಬಯಸುವ ನೀವು ಎಲ್ಲಾ ಅಸ್ಥಿರ ಮುದ್ರಿಸುತ್ತದೆ ಏಕೆಂದರೆ, ಎಲ್ಲಾ ಮೌಲ್ಯಗಳು ಈ ಕೈಮುಚ್ಚಾಟ ಪುಟ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ. ನಾನು ಪುಟ ಟೈಪ್ ಮತ್ತು ಆದ್ದರಿಂದ ನಾನು, ಒಂದು ವ್ಯತ್ಯಾಸಗೊಳ್ಳುವ ಅಥವಾ ವೇರಿಯಬಲ್ ಹೆಸರು ಮೌಲ್ಯವನ್ನು ನಮೂದಿಸಿ , argc ಹೇಳುತ್ತಾರೆ, ನಾನು argc 1 ಎಂದು ನೋಡಿ. ನಾನು argv ಮುದ್ರಿಸುತ್ತದೆ ಬಯಸಿದರೆ [0], ನಾನು ಕೇವಲ ಹಾಗೆ ಮಾಡಬಹುದು. ನಾವು ನೋಡಿದ ಹಾಗೆ, argv [0] ಯಾವಾಗಲೂ ನಿಮ್ಮ ಕಾರ್ಯಕ್ರಮದ ಹೆಸರು, ಯಾವಾಗಲೂ ಕಾರ್ಯಗತಗೊಳ್ಳುವ ಹೆಸರು. ಇಲ್ಲಿ ನೀವು ಸಂಪೂರ್ಣ ಮಾರ್ಗವನ್ನು ಹೆಸರನ್ನು ನೋಡಿ. ನಾನು ಮುದ್ರಿಸುತ್ತದೆ argv [1] ಮತ್ತು ಏನಾಗುತ್ತದೆ ನೋಡಿ. ಇಲ್ಲಿ ನಾವು ಅತೀಂದ್ರಿಯ ಮೌಲ್ಯದ ಈ ರೀತಿಯ ದೊರೆತಿದೆ. ಈ 0x0 ದೊರೆತಿದೆ. ನಾವು ಹೆಕ್ಸಾಡೆಸಿಮಲ್ ಸಂಖ್ಯೆಗಳನ್ನು ಬಗ್ಗೆ ಮಾತನಾಡಿದರು ಈ ಶಬ್ದವನ್ನು ಆರಂಭದಲ್ಲಿ ನೆನಪಿಡಿ? ಅಥವಾ ಹೆಕ್ಸ್ 50 ಪ್ರತಿನಿಧಿಸಲು ಹೇಗೆ pset 0 ಕೊನೆಯಲ್ಲಿ ಸಣ್ಣ ಪ್ರಶ್ನೆ? ನಾವು ಸಿಎಸ್ ರಲ್ಲಿ ಹೆಕ್ಸ್ ಸಂಖ್ಯೆಗಳನ್ನು ಬರೆಯುವ ರೀತಿಯಲ್ಲಿ, ಕೇವಲ ನಮ್ಮನ್ನು ಗೊಂದಲಕ್ಕೀಡು ಮಾಡಲು ಫೆಸಿಲಿಟಿ ಸಂಖ್ಯೆಯ, ನಾವು ಯಾವಾಗಲೂ 0x ಅವುಗಳನ್ನು ಪೂರ್ವಪ್ರತ್ಯಯ. ಆದ್ದರಿಂದ ಈ 0x ಪೂರ್ವಪ್ರತ್ಯಯ ಯಾವಾಗಲೂ ಕೇವಲ, ಒಂದು ಹೆಕ್ಸಾಡೆಸಿಮಲ್ ಸಂಖ್ಯೆಯಾಗಿ ಕೆಳಗಿನ ಸಂಖ್ಯೆ ವ್ಯಾಖ್ಯಾನಿಸುವ ಅರ್ಥ ಒಂದು ಸೆಟ್, ಒಂದು ದಶಮಾಂಶ ಸಂಖ್ಯೆ, ಒಂದು ದ್ವಿಮಾನ ಸಂಖ್ಯೆಯ. ಸಂಖ್ಯೆ 5-0 ಹೆಕ್ಸಾಡೆಸಿಮಲ್ ಒಂದು ಮಾನ್ಯ ಸಂಖ್ಯೆಯನ್ನು ಕಾರಣ. ಮತ್ತು ಫೆಸಿಲಿಟಿ, 50 ಒಂದು ಸಂಖ್ಯೆಯ. ಈ ನಾವು ಅಸಂದಿಗ್ಧಕರಣ ಕೇವಲ ಹೇಗೆ. ಹಾಗೆಯೇ 0 ದಶಮಾಂಶ ಇದು 0x0 ಸಾಧನವಾಗಿ ಹೆಕ್ಸಾಡೆಸಿಮಲ್ 0, ಅವಳಿ 0. ಇದು ಕೇವಲ ಮೌಲ್ಯವನ್ನು 0 ದ. ಈ ಶೂನ್ಯ ನೆನಪಿಗಾಗಿ, ನಿಜವಾಗಿ ಏನು ಎಂದು ಔಟ್ ಆರಂಭಿಸುತ್ತದೆ. ಶೂನ್ಯ ಕೇವಲ 0 ಆಗಿದೆ. ಇಲ್ಲಿ, ಅಂಶ [1] ಶೂನ್ಯ ಆಗಿದೆ argv ಸಂಗ್ರಹಿಸಿಡಬೇಕು. ಆದ್ದರಿಂದ ನಾವು ಶೂನ್ಯ ಸ್ಟ್ರಿಂಗ್ ನಮ್ಮ "CS50 ಕಲ್ಲುಗಳು" ಸ್ಟ್ರಿಂಗ್ ಹೋಲಿಸಿ ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದೇವೆ. ಆದ್ದರಿಂದ ಶೂನ್ಯ dereferencing, ಶೂನ್ಯ ವಿಚಾರಗಳಲ್ಲಿ ಪ್ರವೇಶಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ, ಆ ವಿಶಿಷ್ಟವಾಗಿ ಸೆಗ್ಮೆಂಟೇಶನ್ ದೋಷಕ್ಕೆ ಅಥವಾ ಸಂಭವಿಸಿರುವ ಇತರ ಕೆಟ್ಟ ವಿಷಯಗಳನ್ನು ಕೆಲವು ರೀತಿಯ ಕಾರಣವಾಗಬಹುದು ಹೋಗುವ. ಮತ್ತು strcmp ಪರೀಕ್ಷಿಸಿ ಎಂಬುದನ್ನು ತಿರುಗಿದರೆ ನೀವು ಶೂನ್ಯ ಎಂದು ಒಂದು ಮೌಲ್ಯವನ್ನು ರವಾನಿಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ಅಥವಾ. ಬದಲಿಗೆ, ಇದು ಕೇವಲ ಮುಂದೆ ಹೋಗುತ್ತದೆ, ಅದರ ವಿಷಯ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ ಇದು ದೋಷಗಳನ್ನು seg ವೇಳೆ ಮತ್ತು ಅದು ದೋಷಗಳನ್ನು seg, ಮತ್ತು ಅದು ನಿಮ್ಮ ಸಮಸ್ಯೆ. ನೀವು ಅದನ್ನು ಸರಿಪಡಿಸಿ ಹೋಗಬೇಕಾಗುತ್ತದೆ. ನಿಜವಾಗಿಯೂ ವೇಗವಾಗಿ, ಈ ಸಮಸ್ಯೆಯನ್ನು ಬಗೆಹರಿಸಲು ಹೇಗೆ ಇರಬಹುದು? ಷಾರ್ಲೆಟ್? [ಷಾರ್ಲೆಟ್] ನೀವು ಬಳಸಿ ಪರೀಕ್ಷಿಸಬಹುದು. ಹಾಗಾಗಿ argv [1] ಶೂನ್ಯ ಆಗಿದೆ, == 0, ನಂತರ 1 ಮರಳಿ, ಅಥವಾ ಏನಾದರೂ [ಗ್ರಹಿಸುವುದಕ್ಕಾಗದ]. >> ಹೌದು. ಆದ್ದರಿಂದ, ನಾವು ನೋಡಲು ಪರಿಶೀಲಿಸಬಹುದು ಎಂದು, ಅದನ್ನು ಒಂದು ಉತ್ತಮ ವಿಧಾನ ನಾವು strcmp ಹಾದುಹೋದಾಗ ಬಗ್ಗೆ ನೀವು ಮೌಲ್ಯವನ್ನು, argv [1], ಇದು ಶೂನ್ಯ ಇದೆ? ಇದು ಶೂನ್ಯ ವೇಳೆ, ನಂತರ ನಾವು, ಸ್ಥಗಿತಗೊಳಿಸು ಸರಿ ಹೇಳಬಹುದು. ಇದನ್ನು ಮಾಡಲು ಒಂದು ಸಾಮಾನ್ಯ ರೀತಿಯಲ್ಲಿ argc ಮೌಲ್ಯವನ್ನು ಬಳಸುವುದು. ನೀವು ಮುಖ್ಯ ಆರಂಭದಲ್ಲಿ ಇಲ್ಲಿಯೇ ನೋಡಬಹುದು ನಾವು ಆಜ್ಞಾ ಸಾಲಿನ ಆರ್ಗುಮೆಂಟ್ಗಳನ್ನು ಬಳಸುವಾಗ ನಾವು ಸಾಮಾನ್ಯವಾಗಿ ಮಾಡುವ ಮೊದಲ ಟೆಸ್ಟ್ ಕೈಬಿಡಲಾಗಿದೆ ಇದು ನಮ್ಮ argc ಮೌಲ್ಯವನ್ನು ನಾವು ನಿರೀಕ್ಷಿಸಬಹುದು ಎಂಬುದನ್ನು ಅಥವಾ ಪರೀಕ್ಷಿಸಲು ಹೊಂದಿದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು, ಕನಿಷ್ಠ ಎರಡು ವಾದಗಳನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತಿರುವುದಾಗಿ ನೀವು ಕಾರ್ಯಕ್ರಮದ ಹೆಸರು ಮತ್ತು ಇತರ ಒಂದು. ನಾವು ಇಲ್ಲಿಯೇ ಎರಡನೇ ಆರ್ಗ್ಯುಮೆಂಟ್ ಬಳಸಲು ಬಗ್ಗೆ ಇರುವ ಕಾರಣ. ಆದ್ದರಿಂದ ನಮ್ಮ strcmp ಕರೆ ಮೊದಲು ಮೊದಲು ಪರೀಕ್ಷೆಯ ವಿಧದ ಹೊಂದಿರುವ argv ಕನಿಷ್ಠ 2 ಅಥವಾ ಇಲ್ಲವೋ ಎಂಬುದನ್ನು ಆ ಪರೀಕ್ಷೆಗಳು ಸಹ ವಿಷಯ ರೀತಿಯಲ್ಲಿ ಮಾಡಬೇಕಾಗುವುದು. ಮತ್ತೆ ಕಾರ್ಯಕ್ರಮವನ್ನು ನಡೆಸುವ ಕಾರ್ಯ ನಾವು ನೋಡಬಹುದು. ನೀವು ಯಾವಾಗಲೂ ನಿಜವಾಗಿ ಸಂತೋಷವನ್ನು ಇದು GDB, ಒಳಗೆ ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂ ಪ್ರಾರಂಭಿಸುತ್ತವೆ. , ನೀವು ಚಲಾಯಿಸಬಹುದು, ಮತ್ತು ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂ ಆರ್ಗ್ಯುಮೆಂಟುಗಳನ್ನು ರಲ್ಲಿ ಹಾದುಹೋದಾಗ ನೀವು GDB ಬೂಟ್ ಮಾಡುವಾಗ, ನೀವು ಚಲಾಯಿಸಲು ಕರೆ ಮಾಡಿದಾಗ ಅವುಗಳನ್ನು ಸಫಲವಾಗಲಿಲ್ಲ. ಈ ರೀತಿಯಲ್ಲಿ ನೀವು ವಿವಿಧ ವಾದಗಳು ಪ್ರತಿ ಬಾರಿ ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂ ಪ್ರಚೋದಿಸುವುದು ಇರಿಸಬಹುದು. ಆದ್ದರಿಂದ ಔಟ್, ಅಥವಾ ಮತ್ತೆ, ನಾನು R ಟೈಪ್ ಮಾಡಬಹುದು, ಮತ್ತು ನಾವು ಟೈಪ್ ಏನು "ಹಲೋ" ಏನಾಗುತ್ತದೆ ನೋಡೋಣ ನ. ನೀವು ಮತ್ತೆ ಆರಂಭದಿಂದಲೂ ಆರಂಭಿಸಲು ನೀವು ಯಾವಾಗಲೂ ನೀವು ಕೇಳುತ್ತೇವೆ. ಸಾಮಾನ್ಯವಾಗಿ, ನೀವು ಮತ್ತೆ ಆರಂಭದಿಂದಲೂ ಆರಂಭಿಸಲು ಬಯಸುತ್ತೀರಿ. ಈ ಹಂತದಲ್ಲಿ, ಅದು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಇದು ಮತ್ತೊಮ್ಮೆ, ಇದು ತೋರಿಸುತ್ತದೆ ನಾವು ವಾದ ನಿನ್ನ ಜೊತೆ, buggy1 ಚಾಲನೆ ಮಾಡುತ್ತಿರುವಿರಿ ಎಂದು ಪ್ರೋಗ್ರಾಂ, ಮತ್ತು ಇದು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಔಟ್ ಮುದ್ರಿಸುತ್ತದೆ ಇದು ದುಃಖ ಮುಖ "ನೀವು, ಡಿ ಪಡೆಯಿರಿ" ಹೇಳುತ್ತಾರೆ. ಆದರೆ ತಪ್ಪು seg ಮಾಡಲಿಲ್ಲ. ಆ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ನಿರ್ಗಮಿಸಿದೆ ಹೇಳಿದರು. ಆದ್ದರಿಂದ ಒಳ್ಳೆಯ ಕಾಣುತ್ತದೆ. ಯಾವುದೇ seg ತಪ್ಪು, ನಾವು, ಈ ಹಿಂದೆ ಮಾಡಿದ ಎಂದು ವಾಸ್ತವವಾಗಿ ನಾವು ಪಡೆಯಲು ಎಂದು seg ತಪ್ಪು ದೋಷ ಹಾಗೆ ಆದ್ದರಿಂದ ಕಾಣುತ್ತದೆ. ದುರದೃಷ್ಟವಶಾತ್, ನಾವು ಡಿ ಬರುತ್ತಿದೆ ಎಂದು ನಮಗೆ ಹೇಳುತ್ತದೆ ನಾವು ಹಿಂದಿರುಗಿ ಹೋಗಿ ಕೋಡ್ ನೋಡಲು ಹಾಗೂ ನಡೆಯುತ್ತಿರುವುದರ ನೋಡಬಹುದು ಏನು ಔಟ್ ಲೆಕ್ಕಾಚಾರ - ನಾವು ಡಿ ಗಿಟ್ಟಿಸಿದರು ಎಂದು ನಮಗೆ ಹೇಳುವ ಏಕೆ ಈ printf ನೀವು ಡಿ ದೊರೆತಿದೆ ಎಂದು ನೋಡೋಣ, ಇಲ್ಲಿ ಮಾಡಲಾಯಿತು ನಾವು ಪಟ್ಟಿಯಲ್ಲಿ ಟೈಪ್ ನೀವು ಟೈಪ್ ಪಟ್ಟಿಯನ್ನು ಇಟ್ಟುಕೊಳ್ಳಬಹುದು ಎಂದು, ಇದು, ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂ ಮೂಲಕ ಕೆಳಗೆ iterating ಇಡುತ್ತದೆ ಆದ್ದರಿಂದ ನಿಮ್ಮ ಕಾರ್ಯಕ್ರಮದ ಮೊದಲ ಕೆಲವು ಸಾಲುಗಳನ್ನು ತೋರುವಿರಿ. ನಂತರ ಮುಂದಿನ ಕೆಲವು ಸಾಲುಗಳು, ಮತ್ತು ಮುಂದಿನ ಪಡೆ ಮತ್ತು ಮುಂದಿನ ಚಂಕ್ ತೋರುವಿರಿ. ಮತ್ತು ಅದನ್ನು ಹೋಗಲು ಪ್ರಯತ್ನಿಸುವಾಗ ವಿಲ್ ಕೀಪ್. ಮತ್ತು ಈಗ ನಾವು "ಸಂಖ್ಯೆ 16 ಶ್ರೇಣಿಯ ಔಟ್ ಲೈನ್." ಗೆ ಪಡೆಯುತ್ತೀರಿ ಅದು ಕೇವಲ 15 ಸಾಲುಗಳನ್ನು ಹೊಂದಿದೆ ಏಕೆಂದರೆ. ಈ ಬಿಂದುವಿನಲ್ಲಿ ಪಡೆಯುವುದು ಮತ್ತು ನಿಮ್ಮ "ನಾನು ಏನು ಮಾಡಬೇಕು?", ಚಕಿತಗೊಳಿಸುತ್ತದೆ ವೇಳೆ ನೀವು ಸಹಾಯ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ. ಸಹಾಯ ಮತ್ತು ನಂತರ ಒಂದು ಆಜ್ಞೆಯ ಹೆಸರನ್ನು ಬಳಸಿ. ಮತ್ತು ನೀವು GDB ನಮಗೆ ಸ್ಟಫ್ ಎಲ್ಲಾ ಈ ರೀತಿಯ ನೀಡುತ್ತದೆ ನೋಡಿ. ಇದು "ಯಾವುದೇ ವಾದವನ್ನು, ಹಿಂದಿನ ಪಟ್ಟಿಯನ್ನು ನಂತರ ಅಥವಾ ಸುಮಾರು ಹತ್ತು ಹೆಚ್ಚು ಸಾಲುಗಳನ್ನು ಪಟ್ಟಿ ಹೇಳುತ್ತಾರೆ. ಪಟ್ಟಿ - ಮೊದಲು ಹತ್ತು ಸಾಲುಗಳನ್ನು ಪಟ್ಟಿ - " ಆದ್ದರಿಂದ ಪಟ್ಟಿಯಲ್ಲಿ ಮೈನಸ್ ಬಳಸಿಕೊಂಡು ಪ್ರಯತ್ನಿಸೋಣ. ಮತ್ತು 10 ಸಾಲುಗಳನ್ನು ಹಿಂದಿನ ಪಟ್ಟಿ; ನೀವು ಪಟ್ಟಿಯನ್ನು ಸ್ವಲ್ಪ ಸುಮಾರು ವಹಿಸುತ್ತದೆ. ನೀವು ಪಟ್ಟಿ, ಪಟ್ಟಿ ಮಾಡಬಹುದು - ನೀವು ಕೂಡ ಪಟ್ಟಿಯಲ್ಲಿ 8 ನಂತಹ ಪಟ್ಟಿ ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ನೀಡುತ್ತದೆ ಮತ್ತು ಸಾಲಿನ 8 ಸುಮಾರು 10 ಸಾಲುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತೇವೆ. ನೀವು ಯಾವುದೇ ಒಂದು ಸರಳ ಮಾಡಲೇಬೇಕು ಇದೆ ಮತ್ತು ನೀವು ಇಲ್ಲಿ ಏನು ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೋಡಬಹುದು. ನೀವು CS50 ಬಂಡೆಗಳಲ್ಲಿ ಟೈಪ್ ಮಾಡಿದರೆ, "ನೀವು ಒಂದು ಎ ಪಡೆಯಲು" ಔಟ್ ತೋರಿಸುತ್ತದೆ ಇಲ್ಲವಾದರೆ ಅದು "ನೀವು ಒಂದು ಡಿ ಪಡೆಯಿರಿ" ಔಟ್ ತೋರಿಸುತ್ತದೆ ದೇವರೇ ಪಟ್ಟಣ. ಎಲ್ಲಾ ಸರಿ. ಹೌದು? [ಡೇನಿಯಲ್] ಹಾಗಾಗಿ ಖೋಟ್ಗಳಿಲ್ಲದ CS50 ಬಂಡೆಗಳು ಮಾಡುವುದರಿಂದ ಪ್ರಯತ್ನಿಸಿದಾಗ, ಇದು "ನೀವು ಒಂದು ಡಿ ಪಡೆಯಿರಿ" ಹೇಳುತ್ತಾರೆ ನಾನು ಕೆಲಸ ಪಡೆಯಲು ಉಲ್ಲೇಖಗಳು ಅಗತ್ಯವಿದೆ; ಏಕೆ ಎಂದು? >> ಹೌದು. ಅದನ್ನು ತಿರುಗಿಸುತ್ತದೆ ಸಂದರ್ಭದಲ್ಲಿ - ಈ ಇನ್ನೊಂದು ವಿನೋದ ಕಡಿಮೆ tidbit ಹೊಂದಿದೆ - ನಾವು ರನ್ ನೀವು ಪ್ರೊಗ್ರಾಮನ್ನು ಮತ್ತು ನಾವು CS50 ಬಂಡೆಗಳಲ್ಲಿ ಟೈಪ್ ಮಾಡಿದಾಗ, ಕೇವಲ ರೀತಿಯಲ್ಲಿ, ಡೇನಿಯಲ್ ಅವರು ಹೇಳಿದರು, ಮತ್ತು ನೀವು Enter ಅನ್ನು ಒತ್ತುವ ಈಗಲೂ ನಾವು ಡಿ ಪಡೆಯಿರಿ ಹೇಳುತ್ತಾರೆ ಮತ್ತು ಪ್ರಶ್ನೆ ಏಕೆ ಇದು ಇದೆ? ಮತ್ತು ನಮ್ಮ ಟರ್ಮಿನಲ್ ಮತ್ತು GDB ಎರಡೂ ಈ ಎರಡು ಪ್ರತ್ಯೇಕ ವಾದಗಳನ್ನು ಪಾರ್ಸ್ ಎಂದು ತಿರುಗುತ್ತದೆ. ಎಂದು ಸೂಚಿಸುತ್ತದೆ ಎಂದು ಒಂದು ಸ್ಥಳವನ್ನು ಇಲ್ಲ ಏಕೆಂದರೆ ಮೊದಲ ವಾದವನ್ನು ಕೊನೆಗೊಂಡಿದೆ; ಮುಂದಿನ ಆರ್ಗ್ಯುಮೆಂಟ್ ಪ್ರಾರಂಭವಾಗುವುದನ್ನು. ಎರಡು ಇಂತಹ ಸಂಯೋಜಿಸಲು ರೀತಿಯಲ್ಲಿ, ಅಥವಾ ಕ್ಷಮಿಸಿ, ಒಂದು ವಾದವನ್ನು ಆಗಿ, ಉಲ್ಲೇಖಗಳು ಬಳಸುವುದು. ನಾವು ಉಲ್ಲೇಖಗಳು ಹೇಳಿದಂತೆ ಮತ್ತೆ ಚಾಲನೆ ಆದ್ದರಿಂದ ಈಗ, ನಾವು ಎ ಪಡೆಯಿರಿ ಆದ್ದರಿಂದ ಕೇವಲ ಪುನರವಲೋಕನ ಮಾಡಲು, ಯಾವುದೇ ಉಲ್ಲೇಖಗಳು, CS50 ಮತ್ತು ಬಂಡೆಗಳ ಎರಡು ಪ್ರತ್ಯೇಕ ವಾದಗಳನ್ನು ಪಾರ್ಸ್ ಮಾಡಲಾಗಿದೆ. ಉಲ್ಲೇಖಗಳು, ಇದು ಸಂಪೂರ್ಣವಾಗಿ ಒಂದು ಚರ್ಚೆಯಂತೆ ಪಾರ್ಸ್ ನ. ನಾವು ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ಈ ನೋಡಬಹುದು. ಈವರೆಗೆ ನಾವು ನಮ್ಮ ಕಾರ್ಯಕ್ರಮವನ್ನು ನಡೆಸುವ ನಾವು, ಮತ್ತು ಓಟದ ಮಾಡಲಾಗಿದೆ ಅದನ್ನು ದೋಷಗಳು ಅಥವಾ ಹಿಟ್ ದೋಷ seg ರವರೆಗೆ ಅಥವಾ ನಿರ್ಗಮಿಸಿದೆ ಮತ್ತು ಎಲ್ಲಾ ಸಂಪೂರ್ಣವಾಗಿ ಉತ್ತಮ ಇದುವರೆಗೂ. ಕೆಲವೊಮ್ಮೆ ಈ, ಅವಶ್ಯವಾಗಿ ಅತ್ಯಂತ ಸಹಾಯಕವಾಗಿದೆಯೆ ಕೆಲಸವಲ್ಲ ನಿಮ್ಮ ಕಾರ್ಯಕ್ರಮದ ದೋಷವು, ಆದರೆ ಇದು ಒಂದು ಸೆಗ್ಮೆಂಟೇಶನ್ ದೋಷಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ ಅಲ್ಲ. ನಿಮ್ಮ ನಿಲ್ಲಿಸಲು ಪ್ರೋಗ್ರಾಂ ಅಥವಾ ಹಾಗೆ ಏನು ಕಾರಣವಾಗುತ್ತದೆ ಅಲ್ಲ. ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂ ಒಂದು ನಿರ್ದಿಷ್ಟ ಹಂತದಲ್ಲಿ ತಾತ್ಕಾಲಿಕ GDB ಪಡೆಯಲು ದಾರಿ ಒಂದು ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ಸೆಟ್ ಆಗಿದೆ. ನೀವು ಒಂದು ಕಾರ್ಯ ಹೆಸರಿನಲ್ಲಿ ಒಂದು ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ಹೊಂದಿಸುವ ಮೂಲಕ ಇದನ್ನು ಮಾಡಬಹುದು ಅಥವಾ ನೀವು ಕೋಡ್ ಒಂದು ನಿರ್ದಿಷ್ಟ ಮಾರ್ಗದ ಮೇಲೆ ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ಹೊಂದಿಸಬಹುದು. ನೆನಪಿಡಿ ಸುಲಭ, - ಏಕೆಂದರೆ ನಾನು ಕಾರ್ಯ ಹೆಸರುಗಳಲ್ಲಿ ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ಸೆಟ್ ನೀವು ಮತ್ತು ನೀವು ನಿಜವಾಗಿಯೂ ರಲ್ಲಿ ಹೋಗಿ ಸ್ವಲ್ಪ ನಿಮ್ಮ ಮೂಲ ಕೋಡ್ ಬದಲಿಸಿದರೆ, ನಂತರ ನಿಮ್ಮ ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ವಾಸ್ತವವಾಗಿ ನಿಮ್ಮ ಕೋಡ್ ಒಳಗೆ ಅದೇ ಸ್ಥಳದಲ್ಲಿ ಉಳಿಯಲು ಕಾಣಿಸುತ್ತದೆ. ಆದರೆ ನೀವು ಸಾಲಿನ ಸಂಖ್ಯೆಗಳನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ಮತ್ತು ಸಾಲಿನ ಸಂಖ್ಯೆಗಳನ್ನು ಬದಲಿಸಿದರೆ ನೀವು ಕೆಲವು ಕೋಡ್ ಸೇರಿಸಲು ಅಥವಾ ಅಳಿಸಲು ಏಕೆಂದರೆ, ನಂತರ ನಿಮ್ಮ ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ಎಲ್ಲಾ ಸಂಪೂರ್ಣವಾಗಿ ಸಂಕುಚಿತಗೊಳಿಸಲ್ಪಟ್ಟಿರುವ ಮಾಡಲಾಗುತ್ತದೆ. ನಾನು ಸಾಮಾನ್ಯ ವಸ್ತುಗಳ ಒಂದು ಮುಖ್ಯ ಕಾರ್ಯ ಮೇಲೆ ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ಹೊಂದಿಸಲಾಗಿದೆ. ಸಾಮಾನ್ಯವಾಗಿ ನಾನು GDB ಬೂಟ್, ನಾನು ನಮೂದಿಸಿ ಹಿಟ್, ಬೌ ಮುಖ್ಯ ಟೈಪ್ ಮಾಡುತ್ತೇವೆ, ಮತ್ತು ಒಂದು ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ಸೆಟ್ ವಿಲ್ ಕೇವಲ ಹೇಳುತ್ತದೆ ಮುಖ್ಯ ಕಾರ್ಯದ, ", ತಕ್ಷಣ ನೀವು ಚಲಾಯಿಸುತ್ತಿರುವ ಪ್ರಾರಂಭಿಸಿ ಪ್ರೋಗ್ರಾಂ ವಿರಾಮ" ಆ ರೀತಿಯಲ್ಲಿ, ನಾನು ಎಂದು CS50 ಬಂಡೆಗಳು, ಹೇಳುತ್ತಾರೆ, ನನ್ನ ಪ್ರೋಗ್ರಾಂ ಎರಡು ವಾದಗಳು ಮತ್ತು, ನಮೂದಿಸಿ ಹಿಟ್, ಇದು ಮುಖ್ಯ ಕಾರ್ಯ ಮಾರಿದರೆ ಅದು ಸರಿಯಾದ ಮೊದಲ ಸಾಲಿನಲ್ಲಿ ನಿಲ್ಲುತ್ತದೆ ಇದು strcmp ಕಾರ್ಯವನ್ನು ಮೌಲ್ಯಮಾಪನ ಬಲ ಮೊದಲು. ನಾನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ ಭಾವಿಸುತ್ತೇನೆ ಏಕೆಂದರೆ, ಈಗ ನಾನು ಸುಮಾರು mucking ಮತ್ತು ಏನು ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೋಡಿದ ಆರಂಭಿಸಬಹುದು ನನ್ನ ಕಾರ್ಯಕ್ರಮದಲ್ಲಿ ರವಾನಿಸಲ್ಪಡುತ್ತದೆ ವಿಭಿನ್ನ ಅಸ್ಥಿರ ಎಲ್ಲಾ. ಇಲ್ಲಿ ನಾನು argc ಮುದ್ರಿಸುತ್ತದೆ ಮತ್ತು ಏನು ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೋಡಬಹುದು. ಅದು 3 ವಿಭಿನ್ನ ಮೌಲ್ಯಗಳನ್ನು ಗಾಟ್ ಏಕೆಂದರೆ argc, 3 ಎಂದು ನೋಡಿ. ಇದು ಕಾರ್ಯಕ್ರಮದ ಹೆಸರು ಪಡೆಯಿತು, ಅದು ಮೊದಲ ವಾದವನ್ನು ಮತ್ತು ಎರಡನೇ ಆರ್ಗ್ಯುಮೆಂಟ್ ಅವರಲ್ಲಿದೆ. ನಾವು argv ನೋಡಿ ಆ ಮುದ್ರಿಸುತ್ತದೆ [0], argv [1], ಮತ್ತು argv [2]. ಈ strcmp ಕರೆ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ ಹೋಗುವ ಏಕೆ ಈಗ ನೀವು ಕೂಡ ನೋಡಬಹುದು ನೀವು ಎರಡು ಪ್ರತ್ಯೇಕ ವಾಗ್ವಾದಗಳಲ್ಲಿ CS50 ಮತ್ತು ಬಂಡೆಗಳ ಬೇರೆಯಾಗುತ್ತಾರೆ ಎಂದು ನೋಡಿ ಏಕೆಂದರೆ. ನೀವು ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ಹಿಟ್ ಒಮ್ಮೆ ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂ ಮೂಲಕ ಹಂತಕ್ಕೆ ಮುಂದುವರಿಸಬಹುದು ರೇಖೆಯಿಂದ ಸಾಲು, ಮತ್ತೆ ನಿಮ್ಮ ಕಾರ್ಯಕ್ರಮವನ್ನು ಆರಂಭಿಸಿದೆ ವಿರೋಧಿಸಿದರು. ನೀವು ಮತ್ತೆ ನಿಮ್ಮ ಆರಂಭಿಸಲು ಬಯಸುವುದಿಲ್ಲ ಆದ್ದರಿಂದ, ಇಲ್ಲಿ ಮುಂದುವರೆಸುವೆವು ನೀವು ಮುಂದುವರಿಸಲು ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ ಮತ್ತು ಮುಂದುವರೆಯಲು ಕೊನೆಯ ಪ್ರೊಗ್ರಾಮನ್ನು ಕಾಣಿಸುತ್ತದೆ. ಅದನ್ನು ಇಲ್ಲಿ ಮಾಡಿದ ಹಾಗೆ. ನಾನು ಕಾರ್ಯಕ್ರಮ CS50 ಬಂಡೆಗಳು ಮರುಪ್ರಾರಂಭಿಸಿ ಆದಾಗ್ಯೂ, ಇದು, ಮತ್ತೆ ನನ್ನ ಬ್ರೇಕ್ಪಾಯಿಂಟ್ ಹಿಟ್ಸ್ ಈ ಸಮಯದಲ್ಲಿ, ನಾನು, ಕಾರ್ಯಕ್ರಮದ ಉಳಿದ ಎಲ್ಲಾ ರೀತಿ ಕೇವಲ ಹೋಗಲು ಬಯಸುವುದಿಲ್ಲ ನಾನು ಸಹ, n ಮೊಟಕಾದ ಮುಂದಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ. ಮತ್ತು ಈ ರೇಖೆಯಿಂದ ಪ್ರೋಗ್ರಾಮ್ ಸಾಲು ಹೆಜ್ಜೆ ಕಾಣಿಸುತ್ತದೆ. ವಿಷಯಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಆದ್ದರಿಂದ ನೀವು ವಿಷಯಗಳನ್ನು ಅಪ್ಡೇಟ್ಗೊಳಿಸಲಾಗಿದೆ ಸ್ವೀಕರಿಸುತ್ತೇವೆ, ಮಾಹಿತಿ ವ್ಯತ್ಯಾಸಗಳ ಬದಲಾವಣೆ ವೀಕ್ಷಿಸಬಹುದು. ಇದು ಬಹಳ ಸಂತೋಷ. ಇತರ ತಂಪಾದ ವಿಷಯ, ಬದಲಾಗಿ ಮತ್ತೆ ಮೇಲೆ ಮತ್ತು ಸುಮಾರು ಅದೇ ಆದೇಶ ಪುನರಾವರ್ತಿಸುವ ಹೆಚ್ಚು ನೀವು Enter ಅನ್ನು ಒತ್ತುವ ವೇಳೆ - ಇಲ್ಲಿ ನೀವು ನಾನು ಏನು ಬೆರಳಚ್ಚಿಸಿದ ಮಾಡಿಲ್ಲ ನೋಡಿ - ನಾನು ನಮೂದಿಸಿ ಹೊಡೆಯಲು ಅದನ್ನು, ಹಿಂದಿನ ಆಜ್ಞೆಯನ್ನು ಪುನರಾವರ್ತಿಸುತ್ತೀರಿ ಅಥವಾ ಹಿಂದಿನ GDB ಆಜ್ಞೆಯನ್ನು ನಾನು ಸೈನ್ ಅಳವಡಿಸಿರುವ ನಾನು ನಮೂದಿಸಿ ಹೊಡೆಯುವ ಇರಿಸಬಹುದು ಮತ್ತು ರೇಖೆಯಿಂದ ನನ್ನ ಕೋಡ್ ಲೈನ್ ಮೂಲಕ ಮೆಟ್ಟಿಲು ವಿಲ್ ಕೀಪ್. ನಾನು ವ್ಯಕ್ತಿಗಳು ಇತರ ದೋಷಯುಕ್ತ ಕಾರ್ಯಕ್ರಮಗಳು ಮತ್ತು ಪರಿಶೀಲಿಸಿ ಹೋಗಲು ಪ್ರೇರೇಪಿಸುತ್ತೇವೆ ಎಂದು. ನಾವು ಎಲ್ಲಾ ಇಂದು ವಿಭಾಗದಲ್ಲಿ ಮೂಲಕ ಪಡೆಯಲು ಸಮಯ ಹೊಂದಿಲ್ಲ. ಮೂಲ ಕೋಡ್ ಇಲ್ಲ, ಆದ್ದರಿಂದ ನೀವು ಏನು ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೋಡಿ ರೀತಿಯ ಮಾಡಬಹುದು ನೀವು ನಿಜವಾಗಿಯೂ ಮಧ್ಯ ಸಿಲುಕಿಕೊಂಡರೆ ತೆರೆಮರೆಯಲ್ಲಿ, ಆದರೆ ಕನಿಷ್ಠ, ಕೇವಲ, GDB ಅನ್ನು ಬೂಟ್ ಅಭ್ಯಾಸ ನೀವು ಮೇಲೆ ಒಡೆಯುವ ವರೆಗೆ, ಕಾರ್ಯಕ್ರಮವನ್ನು ನಡೆಸುವ , backtrace ಪಡೆಯುವಲ್ಲಿ ಕ್ರ್ಯಾಶ್ ರಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂಬುದರ ಕುರಿತಾಗಿ ಯಾವ ಸಾಲು, ಕೆಲವು ಬದಲಾಗುವ ಮೌಲ್ಯಗಳನ್ನು ಔಟ್ ಮುದ್ರಿಸುವ, ಮೇಲೆ ನಿಜಕ್ಕೂ ನೀವು ಮುಂದುವರಿಸಲಾಗುತ್ತದೆ ಸಹಾಯ ಏಕೆಂದರೆ ಕೇವಲ ಆದ್ದರಿಂದ, ಅದು ಒಂದು ಭಾವನೆ ಪಡೆಯಿರಿ. ಈ ಹಂತದಲ್ಲಿ, ನೀವು ಪ್ರಶ್ನೆ ಬಿಟ್ಟು ಬಳಸಿ ಅಥವಾ ಇವು, GDB ಹೊರಗೆ ಬಿಡಲು ನೀನು. ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಂ ಈಗಲೂ ಚಾಲ್ತಿಯಲ್ಲಿದೆ ಮಧ್ಯದಲ್ಲಿ ಇದು ನಿರ್ಗಮಿಸಿದೆ ಇದ್ದಲ್ಲಿ, ಯಾವಾಗಲೂ ನೀವು ಕೇಳಬಹುದು, "ನೀವು ನಿಜವಾಗಿಯೂ ಬಿಡಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" ನೀವು ಹೌದು ಹೊಡೆಯಬಹುದು. ಈಗ ನಾವು ಬೆಕ್ಕು ಪ್ರೋಗ್ರಾಂ ಇದು ನಾವು ಮುಂದಿನ ಸಮಸ್ಯೆ, ನೋಡಲು ನೀನು. ನೀವು ಮರುನಿರ್ದೇಶಿಸುತ್ತದೆ ಮತ್ತು ಪೈಪುಗಳ ಮೇಲೆ ಸಣ್ಣ ವೀಕ್ಷಿಸಲು, ನೀವು ಟಾಮಿ ಈ ಪ್ರೋಗ್ರಾಂ ಬಳಸುವ ನೋಡುತ್ತಾರೆ ಮೂಲಭೂತ ತೆರೆಗೆ ಫೈಲ್ ಎಲ್ಲಾ ಔಟ್ಪುಟ್ ಮುದ್ರಿಸುತ್ತದೆ. ನಾನು ಬೆಕ್ಕು ರನ್ ಹಾಗಿದ್ದಲ್ಲಿ, ಈ ಯಂತ್ರಕ್ಕಾಗಿ ವಾಸ್ತವವಾಗಿ ಒಂದು ಅಂತರ್ನಿರ್ಮಿತ ಕಾರ್ಯಕ್ರಮವಾಗಿದ್ದು, ನೀವು ಮ್ಯಾಕ್ಗಳ ಹೊಂದಿದ್ದರೆ ನೀವು ಟರ್ಮಿನಲ್ ತೆರೆಯುತ್ತದೆ ವೇಳೆ ಮತ್ತು ನೀವು ಸಹ ನಿಮ್ಮ ಮ್ಯಾಕ್ ಈ ಮಾಡಬಹುದು. ಮತ್ತು ನಾವು - ಬೆಕ್ಕು, ನ, cp.c ಹೇಳಲು ಅವಕಾಶ, ಮತ್ತು ನಮೂದಿಸಿ ಹಿಟ್. ಈ ಏನು, ನಾವು ಸ್ವಲ್ಪ ಅಪ್ ಸ್ಕ್ರಾಲ್ ಮತ್ತು ನಾವು ಲೈನ್ ಓಡಿ ಅಲ್ಲಿ ನೋಡಿ ವೇಳೆ ಅಥವಾ ನಾವು ಬೆಕ್ಕು ಆಜ್ಞೆಯನ್ನು ಓಡಿ ಅಲ್ಲಿ, ಅದು ಅಕ್ಷರಶಃ ನಮ್ಮ ತೆರೆಗೆ cp.c ವಿಷಯಗಳನ್ನು ಔಟ್ ಮುದ್ರಿತ. ನಾವು ಮತ್ತೆ ಚಾಲನೆ ಮತ್ತು ನೀವು ಒಟ್ಟಿಗೆ ಬಹು ಫೈಲ್ಗಳನ್ನು ರಲ್ಲಿ ಹಾಕಬಹುದು. , ಆದ್ದರಿಂದ ನೀವು ಬೆಕ್ಕು cp.c ಮಾಡಬಹುದು, ತದನಂತರ ನಾವು cat.c ಕಡತ concatenate ಮಾಡಬಹುದು ಇದು, ನಾವು ಬಗ್ಗೆ ಬರೆಯಲು ನೀವು ಕಾರ್ಯಕ್ರಮ ಮತ್ತು ನಮ್ಮ ತೆರೆಗೆ ಬ್ಯಾಕ್ ಮತ್ತೆ ಎರಡೂ ಕಡತಗಳನ್ನು ಮುದ್ರಿಸಲು ಮಾಡುತ್ತೇವೆ. ನಾವು ಸ್ವಲ್ಪ ಅಪ್ ಸ್ಕ್ರಾಲ್ ಆದ್ದರಿಂದ, ನಾವು ನೋಡಿ ನಾವು ಈ ಬೆಕ್ಕು cp.c, cat.c, ನಡೆಸುತ್ತಿದ್ದರು ಮೊದಲು CP ಕಡತ ಮುದ್ರಣ, ಮತ್ತು ನಂತರ ಅದನ್ನು ಕೆಳಗೆ, ಇದು ಬಲ ಕೆಳಗೆ ಇಲ್ಲಿ cat.c ಕಡತ ಮುದ್ರಣ ಮಾಡಿದ. ನಾವು ನಮ್ಮ ಪಾದಗಳನ್ನು ತೇವ ಪಡೆಯಲು ಈ ಬಳಸಲು ನೀನು. ಟರ್ಮಿನಲ್ ಸರಳ ಮುದ್ರಣ ಜೊತೆ ಸುಮಾರು ಪ್ಲೇ, ಆ ಕೆಲಸ ಹೇಗೆ ನೋಡಿ. ನೀವು ಹುಡುಗರಿಗೆ ಜಿಎಡಿಟ್ Name cat.c ಜೊತೆ ತೆರೆಯುತ್ತದೆ ವೇಳೆ, ನಮೂದಿಸಿ ಹಿಟ್ ನಾವು ಬರೆಯಲು ಬಗ್ಗೆ ನೀವು ಕಾರ್ಯಕ್ರಮದ ನೋಡಬಹುದು. ಈ ಸಂತೋಷವನ್ನು ಬಾಯ್ಲರ್ ಪ್ಲೇಟ್ ಒಳಗೊಂಡಿತ್ತು ಮಾಡಿದ, ನಾವು ಎಲ್ಲಾ ಎಂದು ಟೈಪ್ ಸಮಯ ಕಳೆಯಲು ಹೊಂದಿಲ್ಲ ಆದ್ದರಿಂದ. ನಾವು ಸೈನ್ ಜಾರಿಗೆ ವಾದಗಳನ್ನು ಸಂಖ್ಯೆಯನ್ನು ಪರಿಶೀಲಿಸಿ ನಾವು ಉತ್ತಮ ಬಳಕೆ ಸಂದೇಶವನ್ನು ಮುದ್ರಿಸುತ್ತದೆ. ಈ, ಮತ್ತೆ, ನಾವು ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇವೆ ಮಾಡಿರುವುದರಿಂದ, ವಿಷಯ ತೆರನಾದ ಇದು ಬಹುತೇಕ ಸ್ನಾಯು ಮೆಮೊರಿ ಅನಿಸುತ್ತದೆ. ಕೇವಲ ಸ್ಟಫ್ ರೀತಿಯಲ್ಲಿ ನಡೆಸುವ ಮರೆಯದಿರಿ ಮತ್ತು ಯಾವಾಗಲೂ ಸಹಾಯಕವಾಗಿದೆಯೆ ಸಂದೇಶದ ವಿಧದ ಔಟ್ ಮುದ್ರಣ ಆದ್ದರಿಂದ ಜನರು ನಿಮ್ಮ ಪ್ರೊಗ್ರಾಮನ್ನು ಗೊತ್ತಿಲ್ಲ. ಬೆಕ್ಕು, ಇದು ಬಹಳ ಸರಳವಾಗಿದೆ; ನಾವು ವಿವಿಧ ವಾದಗಳು ಎಲ್ಲಾ ಮೂಲಕ ಹೋಗಲು ನೀನು ನಮ್ಮ ಕಾರ್ಯಕ್ರಮ ಜಾರಿಗೆ ತಂದಿತು, ಮತ್ತು ನಾವು ಮುದ್ರಿಸಲು ನೀನು ಒಂದು ಸಮಯದಲ್ಲಿ ಪರದೆಯ ಒಂದು ತಮ್ಮ ವಿಷಯಗಳನ್ನು ಔಟ್. ತೆರೆಗೆ ಕಡತಗಳನ್ನು ಮುದ್ರಿಸುತ್ತದೆ ಸಲುವಾಗಿ, ನಾವು ಹೋಲುತ್ತದೆ ಏನನ್ನಾದರೂ ಮಾಡಲು ನೀನು ನಾವು ರಸಪ್ರಶ್ನೆ ಕೊನೆಯಲ್ಲಿ ಏನು ಮಾಡಿದರು ಎಂದು. ಪ್ರೋಗ್ರಾಂ ನೇಮಿಸಿಕೊಳ್ಳುತ್ತಾರೆ ಎಂದು ರಸಪ್ರಶ್ನೆ, ಕೊನೆಯಲ್ಲಿ, ನಾವು, ಫೈಲ್ ಅನ್ನು ತೆರೆಯಲು ಹೊಂದಿತ್ತು ಮತ್ತು ನಾವು ಅದನ್ನು ಮುದ್ರಿಸಲು ಹೊಂದಿತ್ತು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ಒಂದು ಫೈಲ್ ಅನ್ನು ತೆರೆಯಲು ನೀನು ಮತ್ತು ನಾವು ಬದಲಿಗೆ ಅದರಿಂದ ಓದಲು ನೀನು. ನಂತರ ನಾವು ಬದಲಿಗೆ ಒಂದು ಕಡತಕ್ಕೆ ಆಫ್, ಮುದ್ರಿಸಲು ನೀನು, ನಾವು ತೆರೆಗೆ ಮುದ್ರಿಸಲು ನೀನು. ಆದ್ದರಿಂದ ನೀವು ಎಲ್ಲಾ printf ಜೊತೆ ಮೊದಲು ಮಾಡಿದ ಪರದೆಯ ಮುದ್ರಿಸುವ. ಆದ್ದರಿಂದ ತುಂಬಾ ಕ್ರೇಜಿ ಅಲ್ಲ. ಆದರೆ ಕಡತ ಓದುವ ವಿಲಕ್ಷಣ ರೀತಿಯ. ನಾವು ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ಸ್ವಲ್ಪ ಮೂಲಕ ಹೋಗುತ್ತೇನೆ. ನೀವು ಹುಡುಗರಿಗೆ ನಿಮ್ಮ ರಸಪ್ರಶ್ನೆ, ಸಮಸ್ಯೆಯನ್ನು 33, ಆ ಕೊನೆಯ ಸಮಸ್ಯೆಗೆ ಹಿಂದಕ್ಕೆ ಹೋದರೆ ನಾವು ಇಲ್ಲಿ ಮಾಡಲು ನೀನು ಮೊದಲ ಸಾಲು, ಫೈಲ್ ತೆರೆಯುವ, ನಾವು ಏನು ಮಾಡಿದರು ಹೋಲುತ್ತದೆ. ಸ್ಟೆಲ್ಲಾ ಆದ್ದರಿಂದ, ನಾವು ಒಂದು ಕಡತವನ್ನು ತೆರೆದಾಗ, ಆ ಸಾಲಿನ ನೋಟ ಮಾಡುತ್ತದೆ? [ಸ್ಟೆಲ್ಲಾ] ಕ್ಯಾಪಿಟಲ್ FILE *, ಕಡತ - >> ಸರಿ. >> - Fopen ಸಮಾನವಾಗಿರುತ್ತದೆ. >> ಹೌದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ ಯಾವುದು? ಇದು ಕಾಮೆಂಟ್ನಲ್ಲಿ ಇಲ್ಲಿದೆ. >> ಇದು ಕಾಮೆಂಟ್ ಯಾರಿದ್ದಾರೆ? argv [I] ಮತ್ತು ಆರ್? ನಿಖರವಾಗಿ >>. ಬಲ. ಆದ್ದರಿಂದ ಸ್ಟೆಲ್ಲಾ ಸಂಪೂರ್ಣವಾಗಿ ಸರಿ. ಈ ಲೈನ್ ಕಾಣುತ್ತದೆ ಏನು. ನಾವು, ಒಂದು ಕಡತ ಸ್ಟ್ರೀಮ್ ವ್ಯತ್ಯಯ ಫೈಲ್ * ಅದನ್ನು ಮಳಿಗೆಗೆ ಹೋಗಿ, ಆದ್ದರಿಂದ ನೀವು ಎಲ್ಲಾ ಕ್ಯಾಪ್ಸ್, ಫೈಲ್ *, ಮತ್ತು ಈ ವೇರಿಯಬಲ್ ಹೆಸರನ್ನು ಫೈಲ್ ಕಾಣಿಸುತ್ತದೆ. ನಾವು ಇಷ್ಟ ಇರಲಿ ಇದು ಕರೆಯಬಹುದು. ನಾವು ಬಯಸುವ ಯಾವುದೇ, ಅದು first_file, ಅಥವಾ file_i ಕರೆಯಬಹುದು. ತದನಂತರ ಫೈಲ್ ಹೆಸರು ಈ ಪ್ರೋಗ್ರಾಂಗೆ ಆಜ್ಞಾ ಸಾಲಿನಲ್ಲಿ ರಲ್ಲಿ ಅಂಗೀಕರಿಸಿತು. ಆದ್ದರಿಂದ argv ಸಂಗ್ರಹಗೊಂಡಿರುವಂತಹ [ನಾನು] ಮತ್ತು ನಂತರ ನಾವು ಓದಲು ಕ್ರಮದಲ್ಲಿ ಈ ಕಡತವನ್ನು ತೆರೆಯಲು ನೀನು. ನಾವು ಫೈಲ್ ತೆರೆಯಿತು ನೀವು ಈಗ ಆ, ನಾವು ಯಾವಾಗಲೂ ಮಾಡಲು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲು ಹೊಂದಿರುವ ವಿಷಯ ನಾವು ಒಂದು ಕಡತ ತೆರೆಯಿತು ನೀವು ಯಾವಾಗ? ಅದನ್ನು ಮುಚ್ಚಿ. ಮಿಸ್ಸಿ ಆದ್ದರಿಂದ, ಹೇಗೆ ನಾವು ಫೈಲ್ ಕ್ಲೋಸ್? [ಮಿಸ್ಸಿ] fclose (ಕಡತ) >> fclose (ಕಡತ). ನಿಖರವಾಗಿ. ಗ್ರೇಟ್. ಸರಿ. ನಾವು ಇಲ್ಲಿಯೇ ಕಾಮೆಂಟ್ ಮಾಡಲು ಈ ನೋಡಲು, ವೇಳೆ ಇದು "ಓಪನ್ argv [I] ಮತ್ತು stdout ಅದರ ವಿಷಯಗಳನ್ನು ಮುದ್ರಿಸುತ್ತದೆ." ಹೇಳುತ್ತಾರೆ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಔಟ್ ವಿಚಿತ್ರವಾಗಿ ಹೆಸರು. Stdout ಹೇಳುವ ಕೇವಲ ನಮ್ಮ ದಾರಿ ನಾವು ಟರ್ಮಿನಲ್ ಅದನ್ನು ಮುದ್ರಿಸಲು ಬಯಸುವ; ನಾವು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಪ್ರದಾನ ಸ್ಟ್ರೀಮ್ ಅದನ್ನು ಮುದ್ರಿಸಲು ಬಯಸುವ. ನಾವು ವಾಸ್ತವವಾಗಿ ಇಲ್ಲಿಯೇ ಈ ಅಭಿಪ್ರಾಯವನ್ನು ತೊಡೆದುಹಾಕಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಾನು ಅದನ್ನು ನಕಲಿಸಿ ಮತ್ತು ನಾವು ಮಾಡಲಿಲ್ಲ ಎಂಬುದನ್ನು ಇದು ಅಂಟಿಸಿ ಪಡೆಯಲಿದ್ದೇನೆ. ಈ ಹಂತದಲ್ಲಿ, ಈಗ ನಾವು ಬಿಟ್ ಮೂಲಕ ಕಡತ ಬಿಟ್ ಓದಲು ಹೊಂದಿವೆ. ನಾವು ಓದುವ ಕಡತಗಳ ರೀತಿಯಲ್ಲಿ ಒಂದೆರಡು ಚರ್ಚಿಸಲಾಗಿದೆ ಮಾಡಿದ್ದೀರಿ. ಇದು ಬಿಡಿಗಳ ಇಲ್ಲಿಯವರೆಗೆ ನಿಮ್ಮ ಅಚ್ಚುಮೆಚ್ಚಾಗಿವೆ? ಯಾವ ರೀತಿಯಲ್ಲಿ ನೀವು ನೋಡಿರುವ ಅಥವಾ ನೀವು ಕಡತಗಳನ್ನು ಓದಲು, ನಿಮಗೆ ನೆನಪಿದೆಯೇ? [ಡೇನಿಯಲ್] fread? >> Fread? ಆದ್ದರಿಂದ fread ಒಂದಾಗಿದೆ. ಜಿಮ್ಮಿ, ನೀವು ಯಾವುದೇ ಇತರರು ತಿಳಿಯುವುದು? [ಜಿಮ್ಮಿ] ನಂ >> ಸರಿ. ಇಲ್ಲ. ಷಾರ್ಲೆಟ್? ಅಲೆಕ್ಸಾಂಡರ್? ಯಾವುದೇ ಇತರರು? ಸರಿ. ಆದ್ದರಿಂದ ಇತರ ಬಿಡಿಗಳ ನಾವು ಬಹಳಷ್ಟು ಬಳಸಿ ಎಂದು, ಒಂದು fgetc ಮಾಡುವುದಾಗಿತ್ತು. ಸಹ fscanf ಇಲ್ಲ; ನೀವು ಹುಡುಗರಿಗೆ ಇಲ್ಲಿ ಮಾದರಿಯನ್ನು ನೋಡಿ? ಅವರು ಎಲ್ಲಾ ಎಫ್ ಆರಂಭವಾಗುತ್ತವೆ. ಒಂದು ಕಡತವನ್ನು ಮಾಡಲು ಏನು. Fread, fgetc, fscanf ಇಲ್ಲ. ಈ ಓದುವ ಕಾರ್ಯಗಳನ್ನು ಎಲ್ಲಾ. ನಾವು fwrite ಹೊಂದಿರುತ್ತವೆ ಬರೆಯಲು, ನಾವು ಬದಲಿಗೆ fgetc ಆಫ್ fputc ಹೊಂದಿರುತ್ತವೆ. ನಾವು fprintf ನಾವು ರಸಪ್ರಶ್ನೆ ನೋಡಿದ ಹಾಗೆ ಮಾಡಿದ್ದಾರೆ. ಈ ಒಂದು ಕಡತವನ್ನು ಓದುವಲ್ಲಿ ಒಳಗೊಂಡ ಒಂದು ಸಮಸ್ಯೆಯಾಗಿದೆ, ಏಕೆಂದರೆ ನಾವು ಈ ಮೂರು ಕಾರ್ಯಗಳನ್ನು ಒಂದು ಬಳಸಲು ನೀನು. ನಾವು ಇಲ್ಲಿ ಈ ಕಾರ್ಯಗಳನ್ನು ಕೆಳಗೆ ಬಳಸಲು ಹೋಗುತ್ತಿಲ್ಲ. ಈ ಕಾರ್ಯಗಳು ಎಲ್ಲಾ ಪ್ರಮಾಣಿತ I / O lib ಕಂಡುಬರುತ್ತವೆ. ಈ ಕಾರ್ಯಕ್ರಮದ ಪ್ರಮುಖ ನೋಡಲು, ಆದ್ದರಿಂದ ನಾವು ಈಗಾಗಲೇ ಸ್ಟ್ಯಾಂಡರ್ಡ್ I / O lib ಫಾರ್ ಹೆಡರ್ ಫೈಲ್ ಒಳಗೊಂಡಿದೆ ಎಂಬುದನ್ನು ನೋಡಬಹುದು. ನಾವು ಊಹಿಸಲು ಬಯಸಿದರೆ ಇದು ಒಂದು ನಾವು ಬಳಸಲು ಬಯಸುವ, ನಾವು ಯಾವಾಗಲೂ ಮನುಷ್ಯ ಪುಟಗಳು ತೆರೆದುಕೊಳ್ಳಬಹುದು. ಆದ್ದರಿಂದ ಮನುಷ್ಯ stdio ಟೈಪ್ ಮಾಡಬಹುದು ಮತ್ತು ಸಿ ರಲ್ಲಿ stdio ಇನ್ಪುಟ್ ಮತ್ತು ಔಟ್ಪುಟ್ ಕಾರ್ಯಗಳನ್ನು ಬಗ್ಗೆ ಎಲ್ಲಾ ಓದಿ ನಾವು ಈಗಾಗಲೇ ಓಹ್, ನೋಡಲು ನೋಡಬಹುದು. ಇದು fgetc ಪ್ರಸ್ತಾಪಿಸಿ, ಅದು fputc ಪ್ರಸ್ತಾಪಿಸಿ ನ. ಆದ್ದರಿಂದ ನೀವು fgetc, ಸ್ವಲ್ಪ ಕೆಳಗೆ ಕೊರೆತಕ್ಕಾಗಿ ಮತ್ತು ನೋಡಲು, ಹೇಳಬಹುದು ಮತ್ತು ಅದರ ಮ್ಯಾನ್ ಪುಟವನ್ನು ನೋಡಿ. ನೀವು ಇದನ್ನು ಇತರ ಕಾರ್ಯಗಳನ್ನು ಇಡೀ ಗುಂಪೇ ನಡೆದುಕೊಳ್ಳುತ್ತಾನೆ ಎಂದು ನೋಡಬಹುದು: fgetc, fgets, getc, getchar, ಗೆಟ್ಸ್, ungetc, ಮತ್ತು ಪಾತ್ರಗಳು ಮತ್ತು ತಂತಿಗಳ ಇದರ ಇನ್ಪುಟ್. ಆದ್ದರಿಂದ ಈ, ನಾವು ಗುಣಮಟ್ಟದ ಇನ್ಪುಟ್ ಫೈಲ್ಗಳನ್ನು ಪಾತ್ರಗಳು ಮತ್ತು ತಂತಿಗಳನ್ನು ಓದಲು ಹೇಗೆ ಇದು ಬಳಕೆದಾರರ ಪ್ರಮುಖವಾಗಿ. ಈ ನಾವು ನಿಜವಾದ ಸಿ ಇದನ್ನು ಹೇಗೆ ಆದ್ದರಿಂದ ಈ GetString ಮತ್ತು GetChar ಕಾರ್ಯಗಳನ್ನು ಬಳಸದೇ ನಾವು CS50 ಲೈಬ್ರರಿಯಿಂದ ಬಳಸಿದ. ನಾವು ರೀತಿಯಲ್ಲಿ ಒಂದೆರಡು ಈ ಸಮಸ್ಯೆಯನ್ನು ಮಾಡಲು ನೀನು ಆದ್ದರಿಂದ ನೀವು ಮಾಡುವ ಎರಡು ರೀತಿಯಲ್ಲಿ ನೋಡಬಹುದು. Fread ಡೇನಿಯಲ್ ತಿಳಿಸಿದ ಕಾರ್ಯವನ್ನು ಮತ್ತು fgetc ಎರಡೂ ಅದನ್ನು ಉತ್ತಮ ವಿಧಾನಗಳಿವೆ. ಇದು ಏಕೆಂದರೆ ನೀವು ನೋಡಿ ಎಂದು ನಾನು,,, fgetc ಸ್ವಲ್ಪ ಸುಲಭ ಎಂದು ಒಂದು ವಾದದ, ನಾವು ಪಾತ್ರ ಓದಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ಫೈಲ್ *, ಮತ್ತು ಅದರ ಮರಳುವ ಮೌಲ್ಯವನ್ನು ಒಂದು ಇಂಟ್ ಹೊಂದಿದೆ. ಈ ಹಕ್ಕನ್ನು, ಸ್ವಲ್ಪ ಗೊಂದಲಮಯವಾಗಿದೆ? ನಾವು ಒಂದು ಪಾತ್ರ ಬರುತ್ತಿದೆ ಏಕೆಂದರೆ, ಆದ್ದರಿಂದ ಈ ರಿಟರ್ನ್ ಒಂದು ಚಾರ್ ಮಾಡುವುದಿಲ್ಲ? ನೀವು ಹುಡುಗರಿಗೆ ಈ ಚಾರ್ ಹಿಂದಿರುಗಲು ಇರಬಹುದು ಏಕೆ ಯಾವುದೇ ಕಲ್ಪನೆಗಳನ್ನು ಹೊಂದಿವೆ? [ಮಿಸ್ಸಿ ಉತ್ತರಗಳನ್ನು, ಗ್ರಹಿಸುವುದಕ್ಕಾಗದ] >> ಹೌದು. ಆದ್ದರಿಂದ ಮಿಸ್ಸಿ ಸಂಪೂರ್ಣವಾಗಿ ಸರಿ. ಇದು ASCII ನ ವೇಳೆ, ನಂತರ ಈ ಪೂರ್ಣಾಂಕ ನಿಜವಾದ ಚಾರ್ ಮ್ಯಾಪ್ ಮಾಡಬಹುದು. ಒಂದು ASCII ಅಕ್ಷರ ಎಂದು, ಮತ್ತು ಸರಿ ಆಗಲಿಲ್ಲ. ಕರಾರುವಾಕ್ಕಾಗಿ ನಡೆಯುತ್ತಿದೆ ಎಂಬುದನ್ನು. ಇದು ಹೆಚ್ಚಿನ ಬಿಟ್ಗಳನ್ನು ಹೊಂದಿದೆ ಸರಳವಾಗಿ ಏಕೆಂದರೆ ನಾವು ಒಂದು ಇಂಟ್ ಬಳಸುತ್ತಿದ್ದೀರಿ. ನಮ್ಮ ಚಾರ್ ಕೇವಲ 8 ಬಿಟ್ಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ, ನಮ್ಮ 32-ಬಿಟ್ ಗಣಕಗಳಲ್ಲಿ 1 ಬೈಟ್ ಎಂದು; ಇದು ಅಕ್ಷರ ದೊಡ್ಡ ಇಲ್ಲಿದೆ. ಮತ್ತು ಒಂದು ಇಂಟ್ ಎಲ್ಲಾ ಜಾಗವನ್ನು 4 ಬೈಟ್ಗಳು 'ಮೌಲ್ಯದ ಹೊಂದಿದೆ. ಮತ್ತು ರೀತಿಯಲ್ಲಿ fgetc ಕೆಲಸ ತಿರುಗಿದರೆ, ನಾವು ಈ ಮನುಷ್ಯನ ಪುಟ ಸ್ವಲ್ಪ ನಮ್ಮ ಸಾರಾಂಶ ತನ್ನಿಂದ ಸ್ಕ್ರಾಲ್ ವೇಳೆ, ಎಲ್ಲಾ ರೀತಿಯಲ್ಲಿ ಕೆಳಗೆ ಸ್ಕ್ರಾಲ್. ಅವರು EOF ಎಂದು ಈ ವಿಶೇಷ ಮೌಲ್ಯ ಬಳಸುವ ಔಟ್ ತಿರುಗುತ್ತದೆ. ಇದು fgetc ಕ್ರಿಯೆಯ ಮರಳುವ ಮೌಲ್ಯವನ್ನು ಒಂದು ವಿಶೇಷ ಸ್ಥಿರ ಇಲ್ಲಿದೆ ನೀವು ಕಡತದ ಕೊನೆಯಲ್ಲಿ ಹಿಟ್ ಅಥವಾ ನೀವು ದೋಷ ಪಡೆಯಲು ವೇಳೆ. ಬಂದಾಗಲೆಲ್ಲಾ ಮತ್ತು ಇದು, ಸರಿಯಾಗಿ EOF ಈ ಹೋಲಿಕೆಗಳ ಮಾಡಲು ಎಂದು ತಿರುಗುತ್ತದೆ ನೀವು ಒಂದು ಇಂಟ್ ನಲ್ಲಿ ನೀವು ಹೊಂದಿರುವ ಮಾಹಿತಿಯನ್ನು ಹೆಚ್ಚುವರಿ ಪ್ರಮಾಣದ ಬೇಕು ಒಂದು ಚಾರ್ ವೇರಿಯಬಲ್ ಬಳಸಿಕೊಂಡು ವಿರೋಧಿಸಿದರು. Fgetc ಪರಿಣಾಮಕಾರಿಯಾಗಿ, ಒಂದು ಕಡತದಿಂದ ಒಂದು ಅಕ್ಷರವನ್ನು ಪಡೆಯಲು ಸಹ ನೀವು ನೀವು ಪ್ರಕಾರವನ್ನು ಇಂಟ್ ನ ಹೊಂದಿರುವ ವಿಷಯ ಹಿಂದಿರುಗಿದ ಎಂದು ನೆನಪಿಡುವ ಬಯಸುವ. ಇದು ಬಳಸಲು ಸಾಕಷ್ಟು ಸುಲಭ, ಹೇಳಿದರು. ಇದು ನಮಗೆ ಒಂದು ಪಾತ್ರವನ್ನು ನೀಡಲು ವಿಶೇಷವೇನು; ಆದ್ದರಿಂದ ನಾವು ಎಲ್ಲಾ ಕಡತ ಕೇಳುವ ಇರಿಸಿಕೊಳ್ಳಲು ಹೊಂದಿದೆ, "ನನ್ನ ಮುಂದಿನ ಪಾತ್ರದ ನೀಡಿ, ನನ್ನ ಮುಂದಿನ ಪಾತ್ರದ ನೀಡಿ, ನನ್ನ ಮುಂದಿನ ಪಾತ್ರದ ನೀಡಿ" ನಾವು ಫೈಲ್ ಕೊನೆಯಲ್ಲಿ ಪಡೆಯಲು ತನಕ. ಮತ್ತು, ನಮ್ಮ ಕಡತದಿಂದ ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ಅಕ್ಷರದಲ್ಲಿ ಪುಲ್ ಕಾಣಿಸುತ್ತದೆ ನಂತರ ನಾವು ಅದನ್ನು ಇಷ್ಟಪಡುವ ರೀತಿಯಲ್ಲಿ ಮಾಡಬಹುದು. ನಾವು ಸಂಗ್ರಹಿಸಬಹುದು, ನಾವು, ಒಂದು ಸಾಲನ್ನು ಸೇರಿಸಿ ನಾವು ಮುದ್ರಿಸುತ್ತದೆ. ಆ ಯಾವುದೇ. ಹಿಂದಿನ ಝೂಮ್ ಮತ್ತು ನಮ್ಮ cat.c ಪ್ರೋಗ್ರಾಂ ಹಿಂದಕ್ಕೆ ಹೋಗಿ, ನಾವು fgetc ಬಳಸಲು ನೀನು ವೇಳೆ, ಹೇಗೆ ನಾವು ಕೋಡ್ ಈ ಮುಂದಿನ ಸಾಲು ಸಮೀಪಿಸಲು ಇರಬಹುದು? ನಾವು ಬಳಸಲು ನೀನು - fread ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ಬೇರೆ ಮಾಡುತ್ತದೆ. ಈ ಸಮಯದಲ್ಲಿ, ನಾವು ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ಅಕ್ಷರವನ್ನು ಪಡೆಯಲು fgetc ಬಳಸಲು ನೀನು. ಒಂದು ಸಂಪೂರ್ಣ ಫೈಲ್ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು, ನಾವು ಮಾಡಬೇಕು ಎಂದು? ಅಲ್ಲಿ ಒಂದು ಕಡತದಲ್ಲಿ ಎಷ್ಟು ಪಾತ್ರ? ಸಾಕಷ್ಟು ಇವೆ. ನೀವು ಬಹುಶಃ ಒಂದು ಸಿಗತ್ತೆ ನಂತರ ಮತ್ತೊಂದು ಪಡೆಯಲು ಮತ್ತೊಂದು ಪಡೆಯಲು ಮತ್ತೊಂದು ಸಿಗುತ್ತದೆ. ನಾವು ಇಲ್ಲಿ ಬಳಸಲು ಹೊಂದಿರಬಹುದು ಕ್ರಮಾವಳಿಯ ಯಾವ ರೀತಿಯ ತಿಳಿದಿರುವಿರಿ? ಯಾವ ಪ್ರಕಾರದ -? ಲೂಪ್ ಫಾರ್ [ಅಲೆಕ್ಸಾಂಡರ್] ಎ? ನಿಖರವಾಗಿ >>. ಲೂಪ್ ಕೆಲವು ರೀತಿಯ. ಲೂಪ್ ಒಂದು ಈ ಸಂದರ್ಭದಲ್ಲಿ, ವಾಸ್ತವವಾಗಿ ಶ್ರೇಷ್ಠವಾಗಿರುತ್ತದಲ್ಲದೇ. ನೀವು ಸಂಪೂರ್ಣ ಫೈಲ್ ಮೇಲೆ ಲೂಪ್ ಬಯಸುವ, ಮತ್ತು ನೀವು ಹೇಳುವ ಮಾಡಲಾಯಿತು ನಂತಹ, ಇದು, ಶಬ್ದಗಳನ್ನು ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ಪಾತ್ರ ಪಡೆಯಲು. ರೀತಿ ಎಂಬ ಬಗ್ಗೆ ಯಾವುದೇ ಸಲಹೆಗಳನ್ನು? [ಅಲೆಕ್ಸಾಂಡರ್, ಗ್ರಹಿಸುವುದಕ್ಕಾಗದ] >> ಸರಿ, ನೀವು ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ಯಾವ ಇಂಗ್ಲೀಷ್ ನಲ್ಲಿ ಹೇಳಿ? [ಅಲೆಕ್ಸಾಂಡರ್, ಗ್ರಹಿಸುವುದಕ್ಕಾಗದ] ನಾವು ಸಂಪೂರ್ಣ ಫೈಲ್ ಮೇಲೆ ಲೂಪ್ ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ತರಹ ಆದ್ದರಿಂದ ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಅದು ಧ್ವನಿಸುತ್ತದೆ. [ಅಲೆಕ್ಸಾಂಡರ್] ಹಾಗಾಗಿ <ಇಂಟ್ ಗಾತ್ರವನ್ನು? >> ಗಾತ್ರವನ್ನು -? ನಾನು, ಕಡತದ ಗಾತ್ರ ಊಹೆ? ಗಾತ್ರ - we'll ಅದನ್ನು ಈ ರೀತಿ ಬರೆಯಲು. ಬಾರಿಗೆ ಕಡತದ ಗಾತ್ರದ, ನಾನು + +. ಆದ್ದರಿಂದ, ನೀವು ಈ fgetc ಬಳಸಿಕೊಂಡು, ಮತ್ತು ಹಾಗೆ ಈ ಹೊಸ ಎಂದು ತಿರುಗಿದರೆ ಕೇವಲ ಒಂದು ಕಡತದ ಗಾತ್ರವನ್ನು ಪಡೆಯಲು ಯಾವುದೇ ಸುಲಭ ದಾರಿ ಇಲ್ಲ ಎಂದು ನೀವು ಮೊದಲು ನೋಡಬಹುದು ನಿರ್ಮಿಸಲು ಈ "sizeof" ರೀತಿಯ. ನಾವು fgetc ಕಾರ್ಯವನ್ನು ಬಳಸಲು, ನಾವು ಕೆಲವು ರೀತಿಯ ಪರಿಚಯಿಸುವ ನೀವು ಲೂಪ್ ಈ ಹೊಸ, ಮೋಜಿನ ವಾಕ್ಯ, ಅಲ್ಲಿ ಕೇವಲ ಒಂದು ಮೂಲ ಪ್ರತಿ ಬಳಸುವ ಪಾತ್ರಕ್ಕೆ ಪಾತ್ರ ಹೋಗಲು, ನಾವು, ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ಅಕ್ಷರವನ್ನಾದರೂ ಎಳೆಯಲು ನೀನು ಒಂದು ಸಮಯದಲ್ಲಿ ಅಕ್ಷರ, ಮತ್ತು ನಾವು ತಿಳಿದಿರುವ ರೀತಿಯಲ್ಲಿ ನಾವು ಕೊನೆಯಲ್ಲಿ ಆರ್ ನಾವು ಪಾತ್ರಗಳ ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯನ್ನು ಎಣಿಕೆ ಮಾಡಿದ ಸಂದರ್ಭದಲ್ಲಿ, ಆದರೆ ನಾವು ಹಿಂದೆಗೆದುಕೊಳ್ಳಬೇಕು ಪಾತ್ರ ಕಡತ ಪಾತ್ರದ ವಿಶೇಷ ಕೊನೆಯಲ್ಲಿ ಯಾವಾಗ. ಈ ಚ ಕರೆ, ಮತ್ತು ನಾವು ಆರಂಭಿಸಲು ನೀನು - ಆದ್ದರಿಂದ ನಾವು ಈ ಮಾಡಬಹುದು ಕಡತದ ಔಟ್ ಮೊದಲ ಅಕ್ಷರವನ್ನು ಪಡೆಯಲು ನಮ್ಮ ಮೊದಲ ಕರೆಯೊಂದಿಗೆ. ಇಲ್ಲಿಯೇ ಈ ಭಾಗವನ್ನು ಆದ್ದರಿಂದ, ಈ ಫೈಲ್ ಒಂದು ಅಕ್ಷರವನ್ನು ಪಡೆಯಲು ಹೋಗುತ್ತದೆ ಮತ್ತು ವೇರಿಯಬಲ್ ಚ ಅದನ್ನು ಸಂಗ್ರಹಿಸಲು. ನಾವು ಫೈಲ್ ಕೊನೆಯಲ್ಲಿ ಪಡೆಯಲು ತನಕ ನಾವು ಈ ನಡೆಸುವ ಎಂದು ನೀನು, ಇದು ನಾವು ವಿಶೇಷ EOF ಪಾತ್ರಕ್ಕೆ ಸಮನಾದ ಕಾರಣ ಪಾತ್ರಕ್ಕೆ ಪರೀಕ್ಷಿಸುವ ಮೂಲಕ ಮಾಡಬೇಕು. ಬದಲಿಗೆ ಚ ಮಾಡುವ ಮತ್ತು ನಂತರ + +, ಇದು ಕೇವಲ, ಮೌಲ್ಯವನ್ನು ಹೆಚ್ಚಿಸಲು ಎಂದು ನಾವು ಫೈಲ್ ಒಂದು ಒಂದು ಔಟ್, ಎ, ಹೇಳಲು ಒಂದು ರಾಜಧಾನಿ ಓದಿ ಹಾಗಿದ್ದಲ್ಲಿ ಚ + + ನಮಗೆ ಬೌ ನೀಡುತ್ತದೆ, ಮತ್ತು ನಾವು ಸಿ ಮತ್ತು ನಂತರ D ಹೋಗಬಹುದು. ನಾವು ಯಾವ ಸ್ಪಷ್ಟವಾಗಿ ಅಲ್ಲ. ನಾವು ಇಲ್ಲಿ ಯಾವ ಈ ಕೊನೆಯ ಬಿಟ್ ನಾವು ಕಡತದಿಂದ ಮುಂದಿನ ಅಕ್ಷರವನ್ನು ಪಡೆಯಲು ಬಯಸುವ ಇದೆ. ಆದ್ದರಿಂದ ಹೇಗೆ ನಾವು ಕಡತದಿಂದ ಮುಂದಿನ ಅಕ್ಷರ ಸಿಗುತ್ತವೆ? ನಾವು ಫೈಲ್ ಮೊದಲ ಅಕ್ಷರ ಸಿಗುತ್ತವೆ? [ವಿದ್ಯಾರ್ಥಿ] fgetfile? >> Fgetc, ಅಥವಾ, ಕ್ಷಮಿಸಿ, ನೀವು ಸಂಪೂರ್ಣವಾಗಿ ಸರಿ. ನಾನು ಅದನ್ನು ತಪ್ಪಾಗಿಬರೆಯಲಾದಪದ. ಹೌದು ಹಾಗೆ. ಇಲ್ಲಿ ಬದಲಿಗೆ ಚ ಮಾಡುವ + + ನಾವು ಮತ್ತೆ fgetc (ಕಡತ) ಕರೆಯಲು ನೀನು ಮತ್ತು ನಮ್ಮ ಅದೇ ಚ ವೇರಿಯಬಲ್ ಫಲಿತಾಂಶವನ್ನು ಶೇಖರಿಸಿಡಲು. [ವಿದ್ಯಾರ್ಥಿ ಪ್ರಶ್ನೆ, ಗ್ರಹಿಸುವುದಕ್ಕಾಗದ] ಈ ಫೈಲ್ * ಹುಡುಗರಿಗೆ ವಿಶೇಷವಾಗಿದೆ ಅಲ್ಲಿ >> ಇದು. ಅವರು ಕೆಲಸ ರೀತಿಯಲ್ಲಿ ಅವರು ಹೊಂದಿದೆ - ನೀವು ಮೊದಲ ತೆರೆದಾಗ - ನೀವು ಮೊದಲ ಎಂದು fopen ಕರೆ ಮಾಡಿದಾಗ, FILE * ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕಡತ ಆರಂಭಕ್ಕೆ ಒಂದು ಪಾಯಿಂಟರ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ತದನಂತರ ನೀವು fgetc ಕರೆ ಪ್ರತಿ ಬಾರಿ, ಇದು ಕಡತ ಮೂಲಕ ಒಂದು ಅಕ್ಷರವನ್ನಾದರೂ ಚಲಿಸುತ್ತದೆ. ಈ ಕಾಲ್ ಹಾಗೆ ಮಾಡುವಾಗ, ನೀವು ಒಂದು ಪಾತ್ರಕ್ಕೆ ಕಡತ ಪಾಯಿಂಟರ್ ಏರಿಕೆಯ ಮಾಡುತ್ತಿದ್ದೇವೆ. ಮತ್ತು ನೀವು ಮತ್ತೆ fgetc ಮಾಡಿದಾಗ, ನೀವು ಇನ್ನೊಂದು ಪಾತ್ರ ಸರಿಸುತ್ತಿರುವೆವು ಮತ್ತು ಇನ್ನೊಂದು ಪಾತ್ರ ಮತ್ತು ಇನ್ನೊಂದು ಪಾತ್ರ ಮತ್ತು ಇನ್ನೊಂದು ಪಾತ್ರ. [ವಿದ್ಯಾರ್ಥಿ ಪ್ರಶ್ನೆ, ಗ್ರಹಿಸುವುದಕ್ಕಾಗದ] >> ಮತ್ತು that's - ಹೌದು. ಇದು HOOD ಅಡಿಯಲ್ಲಿ ಈ ಮ್ಯಾಜಿಕ್ ಭಾಸವಾಗುತ್ತದೆ. ನೀವು ಮೂಲಕ ಏರಿಕೆಯ ಇರಿಸಿಕೊಳ್ಳಲು. ಈ ಹಂತದಲ್ಲಿ, ನೀವು ವಾಸ್ತವವಾಗಿ ಅಕ್ಷರದೊಂದಿಗೆ ಕೆಲಸ ಆರ್. ಆದ್ದರಿಂದ ನಾವು ಈಗ ತೆರೆಗೆ ಈ ಮುದ್ರಿಸುತ್ತದೆ ಇರಬಹುದು? ನಾವು ಮೊದಲು ಬಳಸಿದ ಅದೇ printf ವಿಷಯ ಬಳಸಬಹುದು. ನಾವು ಎಲ್ಲಾ ಸೆಮಿಸ್ಟರ್ ಅನ್ನು ಬಳಸುತ್ತಿದ್ದೇನೆ ಎಂದು. ನಾವು, printf ಕರೆಯಬಹುದು ಮತ್ತು ನಾವು ಕೇವಲ ಪಾತ್ರದ ರವಾನಿಸಬಹುದು. ಇದನ್ನು ಮತ್ತೊಂದು ರೀತಿಯಲ್ಲಿ, ಬದಲಿಗೆ printf ಬಳಸಿಕೊಂಡು ಈ ಸ್ವರೂಪ ಸ್ಟ್ರಿಂಗ್ ಮಾಡಲು ಹೊಂದಿರುವ ಹೆಚ್ಚು ನಾವು ಇತರ ಕಾರ್ಯಗಳನ್ನು ಒಂದು ಬಳಸಬಹುದು. ನಾವು ತೆರೆಗೆ ಒಂದು ಪಾತ್ರ ಮುದ್ರಿಸುತ್ತದೆ ಇದು fputc, ಬಳಸಬಹುದು ನಾವು fputc ನೋಡಿದರೆ ಹೊರತುಪಡಿಸಿ - ಅಂತ ಸ್ವಲ್ಪ ಝೂಮ್ ಔಟ್ ಲೆಟ್. ನಾವು ಏನನ್ನು ಸಂತೋಷವನ್ನು ಇದನ್ನು ನಾವು fgetc ಬಳಸಿ ಓದುವ ಅಕ್ಷರದಲ್ಲಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಗಮನಕ್ಕೆ ಆದರೆ ನಾವು ಅದನ್ನು ಮುದ್ರಿಸಲು ಒಂದು ಸ್ಟ್ರೀಮ್ ನೀಡಲು ಹೊಂದಿವೆ. ನಾವು ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಔಟ್ ನೇರವಾಗಿ ಪುಟ್ ಇದು putchar ಫಂಕ್ಷನ್, ಬಳಸಬಹುದು. ನಾವು ಮುದ್ರಣಕ್ಕೆ ಬಳಸಬಹುದಾದ ವಿವಿಧ ಆಯ್ಕೆಗಳ ಒಂದು ಸಂಪೂರ್ಣ ಗುಂಪೇ ಇದೆ. ಅವರು ಪ್ರಮಾಣಿತ I / O lib ಎಲ್ಲಾ ಆರ್. ನೀವು ಮುದ್ರಿಸಬೇಕೆಂದು ಬೇಕಾದಾಗ - ಆದ್ದರಿಂದ printf, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಸ್ಟ್ರೀಮ್ ಔಟ್ ವಿಶೇಷ ಗುಣಮಟ್ಟದ ಮುದ್ರಿಸಲು ಕಾಣಿಸುತ್ತದೆ ಆ stdout ಇದು. ಆದ್ದರಿಂದ ನಾವು ಈ ಮ್ಯಾಜಿಕ್ ಮೌಲ್ಯ, ಇಲ್ಲಿ stdout ರೀತಿಯ ಎಂದು ಉಲ್ಲೇಖಿಸಬಹುದು. ಓಹ್. ಹೊರಗೆ ಅಲ್ಪವಿರಾಮ ಚಿಹ್ನೆಯಿಂದ ಇರಿಸಿ. ಇಲ್ಲಿ ಹೊಸ, ಮೋಜಿನ ಮಾಹಿತಿಯನ್ನು ಸಾಕಷ್ಟು ಆಗಿದೆ. ಈ ಬಹಳಷ್ಟು ಈ ಕೋಡ್ ಎಂದು ಅರ್ಥದಲ್ಲಿ ಬಹಳ ಭಾಷಾನುಗುಣವಾದ ಆಗಿದೆ ಇದು, ಓದಲು ಸುಲಭ ಓದಲು ಕ್ಲೀನ್ ಕೇವಲ ಏಕೆಂದರೆ ಈ ರೀತಿ ಬರೆಯಲಾಗಿದೆ ಎಂದು. ಅದನ್ನು ವಿವಿಧ ರೀತಿಯಲ್ಲಿ, ನೀವು ಬಳಸಬಹುದು ವಿಭಿನ್ನ ಕಾರ್ಯಚಟುವಟಿಕೆಗಳು, ಇವೆ ಆದರೆ ನಾವು ಕೇವಲ ಮತ್ತು ಮೇಲೆ ಇದೇ ಮಾದರಿಗಳನ್ನು ಒಲವು. ನೀವು ಮತ್ತೆ ಮತ್ತೆ ಬರುವ ಈ ಕೋಡ್ ನೋಡಿ ಆದ್ದರಿಂದ ಆಶ್ಚರ್ಯಪಡುತ್ತಾರೆ ಇಲ್ಲ. ಎಲ್ಲಾ ಸರಿ. ಈ ಸಮಯದಲ್ಲಿ, ನಾವು ದಿನಕ್ಕೆ ಮುರಿಯಲು ಅಗತ್ಯವಿದೆ. ಬರುವ ಧನ್ಯವಾದಗಳು. ನೀವು ಆನ್ಲೈನ್ನಲ್ಲಿ ವೇಳೆ ವೀಕ್ಷಿಸಲು ಧನ್ಯವಾದಗಳು. ಮತ್ತು ನಾವು ಮುಂದಿನ ವಾರದಲ್ಲಿ ನೀವು ನೋಡುತ್ತೀರಿ. [CS50.TV]