2011-12-09 4 views
19

Tôi tin rằng tôi đã đọc kỹ toàn bộ tài liệu printf() nhưng không thể tìm thấy bất kỳ cách nào để in ra, ví dụ: các phần tử của mảng 10 thành phần là float(s).Có cách nào để có printf() in đúng một mảng (của float)?

Ví dụ, nếu tôi có

float[] foo = {1., 2., 3., ..., 10.}; 

Sau đó, tôi muốn có một tuyên bố duy nhất như

printf("what_do_I_put_here\n", foo); 

Trong đó sẽ in ra một cái gì đó dọc theo dòng:

1. 2. 3. .... 10. 

Có cách nào để thực hiện điều đó trong vanilla C không?

+5

tôi sử dụng một cái gì đó như '#define printarr (fmt, dat, len) \t for (int i = 0; i DipSwitch

Trả lời

23

bạn cần phải lặp qua các phần tử của mảng

float foo[] = {1, 2, 3, 10}; 
int i; 
for (i=0;i < (sizeof (foo) /sizeof (foo[0]));i++) { 
    printf("%lf\n",foo[i]); 
} 

hoặc tạo hàm trả về xếp chồng lên nhau snprintf và sau đó in nó với

printf("%s\n",function_that_makes_pretty_output(foo)) 
4

Bạn có để lặp qua mỗi phần tử mảng và printf():

for(int i=0;i<10;++i) { 
    printf("%.2f ", foo[i]); 
} 

printf("\n"); 
2

Tôi không nghĩ rằng có một cách để in mảng cho bạn trong printf. "printf" chức năng không có ý tưởng bao lâu mảng của bạn.

+2

Điều đó có thể được xác định trong định dạng. Nhưng tôi không nghĩ rằng bất kỳ specifier như vậy tồn tại. – cnicutar

1

Bạn cần phải đi cho một vòng lặp:

for (int i = 0; i < sizeof(foo)/sizeof(float); ++i) 
    printf("%f", foo[i]); 
printf("\n"); 
11

Có không có câu lệnh đơn nào trong ngôn ngữ cho biết "in toàn bộ mảng vào màn hình". Mỗi phần tử trong mảng phải được in riêng lẻ trên màn hình.

Nhưng đừng lo lắng, các vòng có ở đó để cứu bạn !, Tôi đoán câu hỏi của bạn chỉ là để biết liệu có cách nào và giả sử một người có đại diện 5k trên SO không cần xem một đoạn mã để biết các vòng lặp được thực hiện như thế nào!

+17

Có lẽ anh ta không, nhưng câu hỏi ở đây là có sẵn cho tất cả mọi người, ngay cả đối với những người có 0 đại diện;) –

-4

bạn có thể in nó như là chuỗi:

printf("%s\n", foo); 
1

C được không phản đối lập trình hướng (OOP) ngôn ngữ. Vì vậy, bạn không thể sử dụng các thuộc tính trong OOP. Ví dụ. Không có thuộc tính .length trong C. Vì vậy, bạn cần sử dụng các vòng lặp cho nhiệm vụ của bạn.

-1

Để trung thực Tất cả đều tốt nhưng sẽ dễ dàng nếu hiệu quả hơn nếu ai đó sử dụng số thời gian và hiển thị chúng ở ngoài. Vì vậy, đây sẽ là một lựa chọn tốt. Không được xác định trước biến mảng cho phép người dùng xác định và hiển thị kết quả. Như thế này ..

int main() 
{ 
    int i,j,n,t; 
int arry[100]; 
    scanf("%d",&n); 
    for (i=0;i<n;i++) 
    { scanf("%d",&t); 
     arry[i]=t; 
    } 
for(j=0;j<n;j++) 
    printf("%d",arry[j]); 

return 0; 
}