- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在经历 K & R,并且在递增指针时遇到困难。练习 5.3(第 107 页)要求您使用指针编写一个 strcat 函数。
在伪代码中,该函数执行以下操作:
我得到了一个有效的答案:
void strcats(char *s, char *t)
{
while (*s) /* finds end of s*/
s++;
while ((*s++ = *t++)) /* copies t to end of s*/
;
}
但我不明白为什么这段代码也不起作用:
void strcats(char *s, char *t)
{
while (*s++)
;
while ((*s++ = *t++))
;
}
很明显,我遗漏了一些关于指针递增如何工作的信息。我认为递增 s 的两种形式是等价的。但是第二段代码只打印出字符串s。
我尝试了一个虚拟变量 i 来检查函数是否经历了两个循环。它做了。我阅读了 K & R 的第 5.4 和 5.5 节,但我找不到任何可以阐明这一点的内容。
谁能帮我弄清楚为什么我的函数的第二个版本没有按照我的意愿进行?谢谢!
编辑:谢谢大家。令人难以置信的是,您可以盯着一个相对简单的错误看多久而没有注意到它。有时没有比让别人看一眼更好的补救方法了。
câu trả lời hay nhất
这个:
while(*s++)
;
由于后递增,将 nul 字节定位在字符串的末尾,然后在退出循环之前再次递增它。 t
在 nul 之后被复制:
scontents␀tcontents␀
打印 S
将在第一个 nul 处停止。
这个:
while(*s)
s++;
在找到 0 时从循环中断,因此您将指向 nul 字节。 t
被复制到 nul 上:
scontentstcontents␀
关于C 指针 : difference between while(*s++) { ;} and while(*s) { s++;},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9447866/
Tôi biết loại câu hỏi này đã được trả lời nhưng trong trường hợp của tôi, tôi đã thử tất cả các cấu hình nhưng nó vẫn không hoạt động. Tôi cần một cái nhìn mới về cấu hình của mình (tôi chắc chắn rằng mình đang thiếu thứ gì đó). Cả hai tiện ích bổ sung sẽ ghi lại tất cả các cấp độ. Tôi muốn ghi lại tất cả thông tin gói >= vào điều khiển.
Tôi đang thực hiện một số điểm chuẩn về hiệu suất mã trên thiết bị Windows Mobile và nhận thấy rằng một số thuật toán nhất định hoạt động tốt hơn đáng kể trên một số máy chủ và kém hơn đáng kể trên các máy chủ khác. Tất nhiên, hãy tính đến sự khác biệt về tốc độ đồng hồ. Thống kê mang tính tham khảo (tất cả các kết quả được tổng hợp bởi cùng
Tôi có một chương trình tính diện tích và chu vi của một đa giác. Chương trình cũng xác nhận rằng các phép tính diện tích và chu vi đúng như mong đợi. Tôi không hiểu chuyện gì đang xảy ra, nhưng phần xác thực để xác nhận rằng diện tích và chu vi giống như mong đợi không hoạt động bình thường. Ví dụ: bây giờ tôi kiểm tra và trong mọi trường hợp
Codepen: (Đây là một codepen dành cho những ai muốn bắt đầu ngay. Hãy dùng thử trong Chrome và IE và thấy sự khác biệt) Tôi đang cố gắng sử dụng chuyển tiếp/chuyển tiếp css3 vì chúng mượt mà hơn hiệu ứng jquery.
Tôi có một số biểu thức chính quy khác nhau mà tôi muốn khớp và thay thế trong một văn bản nhất định. Regex1: Nếu văn bản chứa từ "Người sáng lập" thì thay thế tất cả văn bản bằng CEO Regex2: Nếu văn bản chứa 9 chữ số thì thay thế bằng NUM Tôi đã thử sử dụng
Tôi đã viết một ứng dụng đa luồng kết nối với một số tài khoản email từ cơ sở dữ liệu trên mỗi luồng. Tôi biết JavaMail không có tùy chọn nào để kết nối bằng SOCKS5 nên tôi quyết định sử dụng phương thức System.setProperty
Như bạn có thể thấy, đây là các bản xem trước thiết bị khác nhau của Bản minh họa hiện tại của tôi. Màu xanh lá cây trong suốt phía dưới bị chiếm bởi một Trình điều khiển Chế độ xem khác, nhưng khoảng cách cần phải được cố định cho từng loại kích thước khác nhau. Tôi đã thử thay đổi chiều rộng và chiều cao trong Storyboard
Tôi đang tạo một trò chơi và tôi cần có khả năng thay đổi tốc độ của người chơi. Tôi nghĩ lựa chọn tốt nhất là tác động lên Sprite thông qua trọng lực. Để mang lại cho người dùng cảm giác chuyển động, tôi muốn nền di chuyển theo hướng ngược lại với cùng tốc độ. Làm thế nào tôi có thể cho nền là không
Tôi đang xem thư viện BTrees và nhận thấy rằng có nhiều lớp TreeSet (và các lớp khác) như BTrees.IOBTree.TreeSet BTrees.OOBTree.TreeSet BTrees.LFBTree.T
Tôi có một thư viện C++ nhỏ phải được biên dịch cho armeabi và armeabi7a. Tôi cũng có một thư viện c++ rất lớn cần được biên dịch cho armeabi. Hiện đang biên dịch chúng cho cả hai kiến trúc (sử dụng NDK), nhưng điều này làm cho
Tôi cần thay đổi chủ đề một chút dựa trên phần hiện tại của trang web. Có vẻ như MuiThemeProvider chỉ đặt muiTheme khi tải nhưng cần cập nhật khi đạo cụ thay đổi; Làm thế nào để làm điều này? Câu trả lời hay nhất bạn có thể thử đưa chủ đề vào gói
Làm cách nào để tạo hai môi trường lSTListing, mỗi môi trường có bộ đếm riêng? Ví dụ: nếu tôi sử dụng \lstnewenvironment{algorithm[2]{ \renewcommand\lstlist
Tôi muốn thiết lập triển khai dựa trên các nhánh bằng Travis-CI và Github. tức là. - Nếu chúng tôi xây dựng từ quá trình phát triển - thì thực thi /deploy.rb bằng tên máy chủ môi trường DEV, nếu chính - thì
Tôi có cửa sổ biểu mẫu dữ liệu MVVM WPF có xác thực dữ liệu. Nhiều điều khiển là hộp văn bản. Hiện tại, trình kích hoạt liên kết dữ liệu (liên kết) được đặt thành giá trị mặc định. e. Mất tập trung. Điều này có nghĩa là trường này chỉ được xác thực nếu có thể điền đầy đủ. Vì vậy khi xóa một
Tôi có nhiều trang nội dung cho ứng dụng của mình và cuối cùng đã viết rất nhiều Mô hình xem cho mỗi trang nội dung. Ví dụ. Nếu tôi có một danh sách với một nhóm các mục, tôi sẽ có ShowAllViewModel và liên kết với trang nội dung cũng như các mục riêng lẻ trong danh sách
Tôi có Chế độ xem chung và 4 Chế độ xem khác. Tôi đang sử dụng tab Bootstrap (tab điều hướng) trong Chế độ xem chung. Tôi muốn 4 Chế độ xem còn lại là nội dung của 4 tab trong Chế độ xem chung. bởi vì
Tôi muốn có các tùy chọn cấu hình khác nhau cho các mục tiêu khác nhau của plugin phát hành Maven. Đây là câu chuyện: Tôi đang sử dụng Git cho SCM. Tôi muốn plugin phát hành: chuẩn bị thực hiện mọi thứ cục bộ và để phát hành: thực hiện
Tôi đang tạo một TableModel tùy chỉnh bằng cách sử dụng Tóm tắtTableModel cho một dự án và tôi cần tìm cách để các hộp kiểm xuất hiện trên một số hàng nhất định chứ không phải các hàng khác. Tôi đã triển khai phương thức getColumn nhưng tôi muốn
Trích từ cuốn sách "Bí mật Ninja Javascript": SỰ KIỆN LÀ SỰ KIỆN KHÔNG ĐỒNG BỘ Sự kiện khi xảy ra có thể xảy ra lúc chưa được chuẩn bị trước
Tôi đang cố gắng định cấu hình trình ghi nhật ký GWT đầu tiên của mình và cho đến nay tôi đã in các thông báo tường trình lên bảng điều khiển JS của mình (FF Firebug): Cuối cùng, tôi muốn các thông báo KHÔNG NGHIÊM TRỌNG chuyển tới consoleHa
Tôi là một lập trình viên xuất sắc, rất giỏi!