2014-10-21 46 views
-2

變量指針參數如何創建具有可變的指針參數的函數 採取任何數量的指針和打印功能它如:創建在C

print("hello ","world "); 
print("i'm ","adil"," blah "," blah"); 

結果那樣:

$ ./myprogramme 
hello word im adil blah blah 

我發現stdarg.h但我不知道如何做到這一點?

+0

va_args是你需要的。互聯網上有一個教程。搜索'va_args' – 2014-10-22 00:02:42

+0

如果你「找到stdarg.h」,你爲什麼不讀它是如何工作的?在互聯網上有數以千計的演示,教程和手冊。 – 2014-10-22 00:08:32

回答

0

在C中,您可以使用stdarg.h創建variadic function。從維基百科的鏈接例如,

#include <stdarg.h> 

double average(int count, ...) 
{ 
    va_list ap; 
    int j; 
    double sum = 0; 

    va_start(ap, count); /* Requires the last fixed parameter 
          (to get the address) */ 
    for (j = 0; j < count; j++) { 
     sum += va_arg(ap, double); /* Increments ap to the next argument. */ 
    } 
    va_end(ap); 

    return sum/count; 
} 
0

這幾乎是你想要的,但它需要一個NULL終止

#include <stdio.h> 
#include <stdarg.h> 

void print (char *first, ...) 
{ 
va_list argptr; 
char *next; 
    va_start (argptr, first); 
    next = first; 
    while (next) { 
     printf ("%s", next); 
     next = va_arg(argptr, char*); 
     } 
    va_end (argptr); 
} 

int main() 
{ 
    print("hello ","world ", NULL); 
    print("i'm ","adil"," blah "," blah", NULL); 
    return 0; 
} 

但通過添加不同的說法,有一個簡單的答案反正

printf("%s%s", "hello ","world "); 
printf("%s%s%s%s", "i'm ","adil"," blah "," blah");