IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> выдиления имени файла из строки в чем ошибка?, выдиления имени файла из строки
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 151
Пол: Мужской
Реальное имя: иван

Репутация: -  0  +


мне нужно из некого файла прочитать команду и имя файла которое за ней следует например
Код
[autor]=inf.txt
проблем с чтением команд нет а вот проблемы с чтением имени файла возникают.1проблема когда в файле несколько команд вроде все работает а когда 1 неработает.2проблема если ему всетаки удается вытащить имя файла он его вытягивает с символом конца строки будет ли влиять это на открытие файла с таким именем?если будет то как это поправить?Вот текст программы

char v[256],*c[20],*n[1],*name[6],*p,*p2;
int i=0,q=0;
if((fz=fopen("fileini.ini","r"))==NULL) printf("error\n");
else
{
while((fgets(v, 255, fz)))
{ ///////читаем построчно
c[i++] = strdup(v);
q++; ////количество строк
}

}
for(i=0;i<q-1;i++) ////пытаюсь работать с отдельными строками
{
if(strstr(c[i],"[inf]"))
{
p=strstr(c[i],"=");
*n=++p;
name[0]=*n;/////суда помещается имя файла
}
if(strstr(c[i],"[autor]"))
{
p=strstr(c[i],"=");
*n=++p;
name[1]=*n;
}
}
вот тут для 2х команд. помогите заставить это работать smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Перевод строки после "inf.txt" есть? Если есть - то его надо убрать, потому что fgets читает и его тоже в строку, будет лишний символ, который помешает при работе с файлом... Вот так:

  char *name[6], *n;
...
int i = 0, j, len;
while(fgets(st, 255, fz)) {
if(st[len = (strlen(st) - 1)] == '\n') {
st[len] = (char)0; // убираем "\n"
}

if(*st) {
c[i++] = strdup(st);
}
}
fclose(fz);

for(j = 0; j < i; ++j) {
if(strstr(c[j], "[inf]")) {
name[0] = (strstr(c[j], "=")) + 1;
}
if(strstr(c[j], "[autor]")) {
n = (strstr(c[j], "=")) + 1;
}
}

printf("%s\n", n);

прекрасно выводится имя файла, причем без разницы, есть перевод строки или нет.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.05.2024 2:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name