- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在(重新)学习编程,我从 C 开始。我的 IDE(如果我可以这么说)是 Windows7 上的 cygwin(32 位)和 Visual-Studio 2010。我总是编译我用 gcc (cygwin) 和 VS2010 编译器编写的代码。我想,我这样做是因为我认为这是一种很好的学习方式。无论如何,我刚刚了解了 fflush(stdin),即刷新 stdin 缓冲区。似乎是一个很好的功能,否则,使用 scanf 似乎很痛苦。所以我根据教科书中的一个例子写了下面的代码。它既可以用 cygwin 中的 gcc 编译,也可以用 VS2010 编译。当我运行 VS 编译程序时,它工作正常(s.below),当我在 cygwin 中运行 gcc 编译程序时,fflush(stdin) 不会刷新 stdin 缓冲区(s.below)。我读过一些关于 fflush(stdin) 在某些情况下具有未定义行为的线程。不管那是什么意思,我都是从 C for Linux Programming 教科书中摘录的。如果 fflush(stdin) 不是清除标准输入缓冲区中内容的有效方法,还有什么其他标准方法?
非常感谢您的回答!
==Windows下运行的程序:
enter a long integer and a double
23.00 78.99
lint = 23
dt = 0.00
enter a five digits input
78493
u entered 78 and 493
==程序在Cygwin中运行:
enter a long integer and a double
23.00 78.99
lint = 23
dt = 0.00
enter a five digits input
u entered 78 and 2665720
==代码====
long lint;
double dt;
int fp, sp;
char fn[50], ln[50];
/* using the l modifier to enter long integers and doubles */
puts ("enter a long integer and a double");
scanf("%ld %lf", &lint, &dt);
printf("lint = %d\ndt = %.2f\n", lint, dt);
fflush(stdin); /*DOES NOT WORK UNDER CYGWIN!?*/
/* use field width to split input */
puts("\nenter a five digits input");
scanf("%2d %3d", &fp, &sp);
printf("u entered %d and %d\n", fp, sp);
1 Câu trả lời
7.21.5.2.2 的 C11 说(强调我的):
If
stream
points to an output stream or an update stream in which the most recent operation was not input, thefflush
function causes any unwritten data for that stream to be delivered to the host environment to be written to the file; otherwise, the behavior is undefined.
这意味着您不应该在输入流上调用 fflush
(除非您正在为定义了行为的非常特定的操作系统和库编写代码)
这是有充分理由的!您通常会认为 fflush(stdin)
会刷新您刚刚输入的行,对吧?好吧,还有更多。想象一下这样运行你的程序:
$ ./program < input_file
在这种情况下,理论上所有文件都已经在tiêu chuẩn
的缓冲区中。因此,刷新该缓冲区等于结束您的输入,这是一个非常无用的操作。由于这些原因,fflush
不能对输入流有非常明智的行为,这就是它在输入流上未定义的原因。
如果你想忽略当前行,有更好的方法。一个例子如下:
void flush_line(FILE *fin)
{
số nguyên c;
LÀM
{
c = fgetc(fin);
} while (c != '\n' && c != EOF);
}
这会逐个字符地读取输入并停止,直到发生文件末尾、读取错误或行尾。
关于c - fflush(stdin) 不能在 cygwin 中用 gcc 编译,但可以用 visual studio 2010 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20081062/
Tôi thường sử dụng SSMS để truy vấn dữ liệu và xây dựng tập dữ liệu, còn bộ phận CNTT của tôi chịu trách nhiệm quản trị cơ sở dữ liệu. Gần đây tôi đã khám phá ra Azure Data Studio và tôi thích: IntelliSense Kiểm soát nguồn (ví dụ: sử dụng Git) Tiện ích mở rộng từ cộng đồng SQ
Tôi muốn biên dịch nhiều thứ khác nhau tùy thuộc vào phiên bản Visual Studio tôi đang sử dụng, như #if VISUAL_STUDIO_VERSION > 2015 eventH?.Invoke(this, EventArgs.
Nhóm phát triển của chúng tôi có kế hoạch nâng cấp từ Visual Studio 2005 lên Visual Studio 2010 -- bỏ qua Visual Studio 2008. Hầu hết các dự án là các dự án VB ASP.NET, sử dụng
Visual Studio 2015 của tôi không thể xây dựng bộ công cụ nền tảng 2010. Nó nói rằng: Không tìm thấy công cụ xây dựng cho Visual Studio 2010 (v100).
Hiện tại tôi đang sử dụng Visual Studio 2015 để lập trình ứng dụng ASP.NET Core. Tôi có câu hỏi sau đây về việc cài đặt Visual Studio 2017: Phương pháp nào được coi là tốt nhất và/hoặc sạch nhất để thực hiện?
Khi cố gắng tải tiện ích mở rộng Visual Studio từ Extensions and Updates, lỗi sau sẽ xảy ra:-
Câu hỏi này đã có câu trả lời tại đây: Visual Studio Code và VS 2012 có thể được cài đặt trên cùng một máy tính không? (1 câu trả lời) Đã đóng vào năm ngoái. Sau khi cài đặt
Là một phần của cài đặt chuẩn, Visual Studio Code đi kèm với chủ đề màu có tên gọi là "Monokai Dimmed". Có cách nào để chuyển phần mềm này sang Visual Studio 2015 không? Tôi đã kiểm tra chủ đề cộng đồng (h
Tôi muốn bắt đầu lập trình CUDA. Tôi đã cài đặt Visual Studio 2010 Express. Tôi cũng đã cài đặt nVidia nSight Visual Studio. Và tôi có tất cả các điều kiện tiên quyết thông thường (Ne
Visual Studio Community Edition có thể sử dụng kho lưu trữ trên tài khoản Visual Studio Online không? Tôi đã sử dụng Visual Studio Online có trong tài khoản của tôi.
Tôi có một ứng dụng đang phát triển nhưng gặp phải sự cố trên Android Studio. Khi tôi nhấp vào "build->run" rồi chọn thiết bị của mình, ứng dụng không bao giờ chạy trên điện thoại của tôi (và android-s
Tôi đang sử dụng Visual Studio 2010. Một vấn đề tôi gặp phải là khi tôi tạo một dự án web mới, Visual Studio sẽ tạo dự án đó nhưng không hiển thị giải pháp của dự án đó trong Solution Explorer. Một điều nữa là, tôi nghĩ
Tôi đã đọc qua nhiều bài đăng ở đây và không thể tìm ra câu trả lời rõ ràng nào khả thi. Vì vậy, sau khi dành một thời gian để hoàn thiện nó, tôi nghĩ mình nên phát hành nó. Sự cố: Hồ sơ xuất bản sẽ được xây dựng trên máy chủ nhưng sẽ không xuất bản. Giải pháp: Đảm bảo Microsoft Wind đã được cài đặt
Tôi đang cố gắng xây dựng một ứng dụng C++ CLI hướng tới .NET 3.5 bằng Visual Studio 2012. Tôi đã thực hiện việc này trên một máy bằng cách cài đặt Visual Studio 2008 và chỉ định bộ công cụ nền tảng v90.
Tôi có một dự án trong Microsoft Visual Studios 2013 mà tôi muốn mở trong Microsoft Visual Studios 2010. Có cách đơn giản nào để thực hiện việc này không? Hay tôi phải làm vào năm 2010
Tôi tự hỏi, nếu tôi gửi một thư mục giải pháp (được viết bằng Visual Studio C#), bạn có thể mở giải pháp đó trong Visual Studio cho Mac không? Trong Visual Studio 20
Có cách nào để thiết lập cùng một phím tắt trong Visual Studio Code và Visual Studio (mà không phải thay đổi thủ công mỗi lần) không? Ví dụ, tôi thường sử dụng A trong Visual Studio Code
Tôi vừa mới bắt đầu tìm hiểu về Visual Studio Code. Tôi muốn biết liệu tôi có thể thay thế Visual Studio cho mọi công việc liên quan đến phát triển .NET của mình không? Tôi có thể tiết kiệm tiền khi mua bản quyền Visual Studio không? V
Tôi đã cài đặt Visual Studio 2019 Enterprise Edition (VS 2019 16.1.4) với giấy phép hợp lệ (Visual Studio Subscription) và nó hoạt động tốt. Đột nhiên khi tôi cố gắng mở dự án hoặc bất kỳ tập tin nào trong dự án
Tôi đã sử dụng Compass để biên dịch các tệp sass trong môi trường Windows, thông qua dòng lệnh hoặc sử dụng ứng dụng Compass để tìm kiếm trong một thư mục. Tôi vừa mới bắt đầu sử dụng Visual Studio (Professional 201
Tôi là một lập trình viên xuất sắc, rất giỏi!