![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
BrookBond |
|
|||
![]() Возможно все..... Профиль Группа: Участник Сообщений: 17 Регистрация: 9.6.2012 Где: Санкт-Петербург Репутация: нет Всего: нет |
Знатоки подскажите пожалуйста, как изменять имя файла, чтобы прога открывала нужный мне файл?
Чтоб я мог выбирать название файла. Я видимо с указателями путаюсь (( Давно с этой проблемой столкнулся и никак не могу решить, гуглить не помогает #include <iostream> int main() { FILE *f1; char stroka[100]; int N=0; int time; char *fname; scanf("%d",&time); switch(time) { case1: *fname = "1.txt";break; case2: *fname = "2.txt"; break; case3: *fname1 = "3.txt"; break; default : printf("\nError name of fail"); } printf("\ntime=%d fname=%s",time,fname); if((f1=fopen(fname,"r"))==NULL); {printf("\nError open %s fail",fname);} while(!feof(f1)) {fscanf(f1,"%s\n,",& stroka);N++;} return 0; } |
|||
|
||||
ChihPih |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 532 Регистрация: 3.12.2006 Репутация: нет Всего: 22 |
А разве нелья вместо привязки номера к имени, сразу имя файла считать с консоли, а потом открывать его?
Добавлено @ 22:02 В Си/Си++ с указателями на строки так не работают, для работы со строками в Си, например, для копирования строки в массив типа char используют функцию strcpy, а в Си++ проще юзать класс string. Это сообщение отредактировал(а) ChihPih - 30.3.2013, 22:05 |
|||
|
||||
Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 2 Всего: 14 |
Как вариант можно так сделать, но вообще наверное проще имя файла считывать
|
|||
|
||||
BrookBond |
|
|||
![]() Возможно все..... Профиль Группа: Участник Сообщений: 17 Регистрация: 9.6.2012 Где: Санкт-Петербург Репутация: нет Всего: нет |
С консоли сразу имя не проще, это я привел упращенный вариант проги, на самом деле она большая. И если решить задачу с переключением, то всебудет Ок. Интересно почему переключатель не работает, даже так
#include <iostream> #include <stdio.h> #include <conio.h> #include <ctype.h> #include <math.h> #include <stdlib.h> #include <string.h> int main() { FILE *f1; char stroka[100]; int N=0; int time; scanf("%d",&time); char fname[20]; switch(time) { case1: sprintf (fname, "GMKN_1.txt");break; case30: sprintf (fname, "GMKN_30.txt");break; // case3: *fname1 = "3.txt"; break; default : printf("\nError name of fail"); } printf("\ntime=%d fname=%s",time,fname); if((f1=fopen(fname,"r"))==NULL); {printf("\nError open %s fail",fname);} while(!feof(f1)) {fscanf(f1,"%s\n,",& stroka);N++; printf("\n%d",N);} fclose(f1); getch (); return 0; } |
|||
|
||||
Crafty |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 319 Регистрация: 3.11.2008 Репутация: 2 Всего: 14 |
||||
|
||||
BrookBond |
|
||||
![]() Возможно все..... Профиль Группа: Участник Сообщений: 17 Регистрация: 9.6.2012 Где: Санкт-Петербург Репутация: нет Всего: нет |
Благодарю, очень выручили)))))) ![]() |
||||
|
|||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
там вообще свитч не нужен. у вас имена же в массиве.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |