0

如何重写以下代码块?我需要通过函数 token() 提取一些参数,然后使用这些参数调用 printf。参数数量未知。

char *S[32]; int i=0;
while (t) {
    char *s=token(&t, lineno, 0);
    assert(i<sizeof(S)/sizeof(S[0]));
    S[i++]=s;
}
printf(f, S[0], S[1], S[2], S[3], S[4], S[5], S[6], S[7], S[8], S[9],
     S[10], S[11], S[12], S[13], S[14], S[15], S[16], S[17], S[18], S[19],
     S[20], S[21], S[22], S[23], S[24], S[25], S[26], S[27], S[28], S[29],
     S[30], S[31]);
4

3 回答 3

0

这些参数是否要从命令行中获取?如果是这样,那么利用argcand argv:main (int argc, char *argv[])并将它们传递给一个函数以根据需要解析它们,消除对标记化的需要并将处理多个变量参数:)

附录: 用于从文件中读取参数:

我有几个 C 答案给你,取决于你希望如何实现它们,第二个示例代码只是直接读取和转储,第一次读取然后标记化转储 9你可以不同地使用它们这只是一个快速演示展示如何对文件中的 args 进行标记:):

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

int main()
{
    FILE *f;
    int sizerValue = 1024;
    char s1[sizerValue],*p;
    f = fopen("testFile.txt", "r");
    while (fgets(s1, sizerValue, f))
    {
    while (fgets(s1, sizerValue, f))
    {
        p=strtok(s1, ";n");
        do
        {
             printf ("%sn",p);
        }
        while(p=strtok(NULL,";n"));
        }
    }
return 0;
}       

#include <stdio.h>
#define BLOCK   1024

int main() {
    FILE *f=fopen("TestFile.txt","r");
    int size;
    char buffer[BLOCK];
    while((size=fread(buffer,BLOCK,sizeof(char),f)>0)
            fwrite(buffer,size,sizeof(char),stdout);
    fclose(f);
    return 0;
}
于 2013-04-15T10:03:23.270 回答
0

我认为您应该使用 vprintf : cplusplus.com 上的 vprintf 参考

于 2013-04-15T09:49:21.590 回答
0

array[] = { aPointer,aPointer,...,NULL}

于 2013-04-15T09:50:17.453 回答