2010-07-06 45 views
9

Trong C++, chức năng setw được sử dụng để đặt số ký tự được sử dụng làm chiều rộng trường cho thao tác chèn tiếp theo. Có bất kỳ chức năng trong C, tôi có nghĩa là, trong thư viện chuẩn c, mà làm điều tương tự?C-tương đương với chức năng 'setw'

+0

Đây có thể là lần đầu tiên tôi đã nhìn thấy một ai đó hiểu làm thế nào để sử dụng và định dạng iostream và không làm thế nào để làm điều tương đương với 'printf '... nó gần như luôn luôn là một cách khác. :) –

+1

Vâng, tôi chạy vào những thứ tương tự mọi lúc. Tôi đã học được các trình định dạng iostream kiểu C++ ở trường đại học, nhưng chúng tôi sử dụng kiểu c trong công việc. –

Trả lời

18

printf ("%5d", 42);

Sẽ in 42 bằng 5 dấu cách. Đọc các trang của printf của người đàn ông để hiểu cách nhân vật đệm, tràn và các sắc thái khác hoạt động như thế nào.

EDIT: Một số ví dụ -

int x = 4000; 
printf ("1234567890\n"); 
printf ("%05d\n", x); 
printf ("%d\n", x); 
printf ("%5d\n", x); 
printf ("%2d\n", x); 

Cung cấp đầu ra

1234567890 
04000 
4000 
4000 
4000 

Chú ý rằng %2d là quá nhỏ để xử lý các số được truyền cho nó, nhưng vẫn in toàn bộ giá trị.

+1

Lưu ý rằng việc đặt một '-' trước số đệm sẽ làm cho đầu ra căn chỉnh sang trái. Ví dụ, 'printf ("% - 7s, "12345"); 'sẽ in' 12345__' trong đó '_' là một dấu cách. Điều này trái ngược với' printf ("% 7s," 12345 ");' cung cấp cho bạn '__12345'. [Câu trả lời liên quan] (http://stackoverflow.com/a/276869/1214700) – mb595x

4

Không, vì luồng được sử dụng trong C không duy trì trạng thái như cách đối tượng luồng làm.

Bạn cần chỉ định bằng ví dụ: printf() sử dụng mã định dạng phù hợp.

+0

bạn có thể chỉ định cách tôi có thể làm điều đó không? Tôi cần định dạng tương đương của 'setw (2)' ...... –

2

lựa chọn khác là để xác định chuỗi định dạng như là một biến:

char print_format[] = "%5d"; printf(print_format, 42); 

Trên đây là tương tự như C++ setw, trong đó bạn có thể thiết lập các nội dung của biến trước khi in. Nhiều trường hợp yêu cầu định dạng động của đầu ra. Đây là một phương pháp để đạt được nó.

-1

setw Thao tác: Trình điều khiển này thiết lập chiều rộng trường tối thiểu trên đầu ra. Cú pháp là: setw (x) Ở đây setw làm cho số hoặc chuỗi theo sau nó được in trong một trường rộng x ký tự và x là đối số được đặt trong trình xử lý setw. Các tập tin tiêu đề đó phải được bao gồm trong khi sử dụng thao túng setw là Mẫu Mã

#include <iostream> 
using namespace std; 
#include <iomanip> 
  
void main() 
{ 
int x1=12345,x2= 23456, x3=7892; 
cout << setw(8) << "Exforsys" << setw(20) << "Values" << endl 
        << setw(8) << "E1234567" << setw(20)<< x1 << endl 
        << setw(8) << "S1234567" << setw(20)<< x2 << endl 
        << setw(8) << "A1234567" << setw(20)<< x3 << endl; 
} 
+1

đây không phải là c equivilent –

+0

Đây không phải là câu trả lời hợp lệ. Không c tương đương. – NicoBerrogorry

Các vấn đề liên quan