複数文字列の渡し方

[戻る]
そる 2008/09/24(水) 14:50:26
教えてください。
下のPrintLabelって関数に
複数の文字列を渡したいんですが、
下のようにするとprintfでエラーになります。
渡し方が間違ってるのかと思うんですが
どうやるのが正しいやり方でしょうか?
都合でPrintLabelは変更できません。

#include "stdafx.h"

void PrintLabel(char    **label);
int main(int argc, char* argv[])
{
  char    buf[][256] = {"1", "2", NULL};
  PrintLabel((char **)buf);
  return 0;
}

void PrintLabel(char **label)
{
  while (*label) {
    printf("%s\n", *label++);
  }
}

επιστημη [HomePage] 2008/09/24(水) 15:00:21
↓可変長引数での例

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

void print(const char* format, ...) {
  const char* arg;
  va_list argptr;
  va_start(argptr, format);
  while ( (arg = va_arg(argptr,const char*)) != NULL ) {
    printf(format,arg);
  }
  va_end(argptr);
}

int main() {
  print("[%s] ", "one", "two", NULL);
  return 0;
}

επιστημη [HomePage] 2008/09/24(水) 15:02:25
> 都合でPrintLabelは変更できません。

おっとっと。

#include <stdio.h>

void PrintLabel(char **label)
{
  while (*label) {
    printf("%s\n", *label++);
  }
}

int main() {
  char* labels[] = { "one", "two", NULL };
  PrintLabel(labels);
  return 0;
}

そる 2008/09/24(水) 15:29:00
[[解決]]
ありがとうございます。
おかげさまでうまく行きました。

古いスレッドには追加発言できません。