Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > передача имени файла в функцию


Автор: MZ412 30.12.2009, 17:57
Приветствую.
Пишу на ANSI C программку.
Привожу лишь проблемный  код.

Основной файл main.c

Код

#include <stdio.h>
#include "test.h" //функция, принимающая имя файла

int main (int argc, char *argv[])
{
          test(*argv[1]);
}


Файл test.c

Код

#include <stdio.h>

int test(char filename)
{
          printf("%s\n", filename);
}


Файл заголовка test.h

Код

#ifndef TEST_H
#define TEST_H

int test(char filename);

#endif


При выполнении программы вместо нормального пути до файла выводиться ктоказябра типа g┬Л©©7g.
В пределах одного файла тоже нее работает.

Не подскажете, в чём я путаюсь?

Автор: cutwater 30.12.2009, 18:29
Код

char filename


это символ.

Автор: MightyCat 30.12.2009, 22:19
Во-первых, функция test ничего не возвращает, поэтому тип возвращаемого значения void, а не int
Во-вторых, вы хотите строку, а в аргументах стоит символ, поэтому меняем filename на filename[] или же char на char* (это как приятнее)
Код

#include <stdio.h>
void test(char* filename)
{
          printf("%s\n", filename);
}

И в main передаем не символ ( test(*argv[1]) ) а всю строку ( test(argv[1]) ) (правильнее сказать, указатель на строку)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)