Member 14630688 Ответов: 1

Как извлечь строку из файла на языке Си


Я хочу извлечь строку из строки, которая считывается из файла.

Это строка из текста "N0010 (название инструмента: BA6)"
Поэтому я просто хочу извлечь последний "BA6" в символьной строке.

Как мне это сделать?

Что я уже пробовал:

while(!feof(fp))
{
    fgets(fline,200,fp);

    if(strstr(fline,"TOOL NAME:")!=NULL)
    sscanf(fline,"N0010 TOOL NAME:%s",tname);

    if(strstr(fline,"TOOL DIAMETER:")!=NULL)
    sscanf(fline,"N0020 TOOL DIAMETER:%s",tdia);

    if(strstr(fline,"TOOL RADIUS:")!=NULL)
    sscanf(fline,"N0030 TOOL RADIUS:%s",trad);

    if(strstr(fline,"STOCK_PART:")!=NULL)
    sscanf(fline,"N0040 STOCK_PART:%s",spart);
}
  fclose(fp);

1 Ответов

Рейтинг:
5

CPallini

Как же так на земле

Цитата:
scanf(fline,"N0010 TOOL NAME:%s",tname);
возможно, он мог бы сравниться с
Цитата:
N0010 (название инструмента: BA6)

(Подсказка: круглые скобки).


Shao Voon Wong

5

CPallini

Спасибо.

Member 14630688

Я пытался это сделать. sscanf(fline,"N0010 (имя инструмента: %s)",tname);

Фактическая строка в тексте - 'N0010 (имя инструмента: 10R1)'

В tname я получаю "10R1)" я не хочу последнюю скобку ")" я просто хочу, чтобы вывод был "10R1"

CPallini

Да, sscanf с %s останавливается только на первом символе пробела.
Вы можете попробовать вместо этого:

sscanf(fline,"N0010 (TOOL NAME: %[^)]",tname)

Видеть:
http://www.cplusplus.com/reference/cstdio/scanf/