• Регистрация
TItnaium_IDK
TItnaium_IDK 0.00
н/д

Как заменить определенный текст (определенные строки) в .c (.txt) файле, используя .m скрипт?

20.09.2022

Здравствуйте!
Возникла необходимость менять некоторое строчки в сишном файле автоматически, используя матлабовский скрипт. 

Прошерстил весь интернет, в т.ч. англоязычные форумы, не смог ничего найти.

Нашел только как сконвертировать из .c в .txt и обратно, но обработать правильно текстовик тоже не получилось

Вот так я конвертировал:

 fn='qwe.c';
 [~,f]=fileparts(fn);
 movefile(fn,[f '.txt'])

% тут должна быть замена строк

 fn='qwe.txt';
 [~,f]=fileparts(fn);
 movefile(fn,[f '.c'])

 

У меня есть исходный файл си:

// lasdi
//oweifu

If cnt >- iwefi (124) (1834)

asd_range_32V;

void VCU_SW_GetAI100msec_Init(void)
{
  /* Start for S-Function (adcGetValue_ttc500): '<S263>/adcGetValue1' */

  // Initialization of ADC IO_ADC_16 channel
  IO_ADC_ChannelInit(IO_ADC_16,
                     IO_ADC_ABSOLUTE,
                     IO_ADC_RANGE_5V,
                     IO_ADC_NO_PULL,
                     IO_PIN_NONE,
                     NULL);
					 
}

  /* Start for S-Function (adcGetValue_ttc500): '<S263>/adcGetValue1' */

  // Initialization of ADC IO_ADC_16 channel
  IO_ADC_ChannelInit(IO_ADC_16,
                     IO_ADC_ABSOLUTE,
                     IO_ADC_RANGE_5V,
                     IO_ADC_NO_PULL,
                     IO_PIN_NONE,
                     NULL);

  /* Start for S-Function (adcGetValue_ttc500): '<S263>/adcGetValue3' */

  // Initialization of ADC IO_ADC_56 channel
  IO_ADC_ChannelInit(IO_ADC_56,
                     IO_ADC_ABSOLUTE,
                     IO_ADC_NO_RANGE:,
                     IO_ADC_PD_10K,
                     IO_PIN_NONE,
                     NULL);

  /* Start for S-Function (adcGetValue_ttc500): '<S263>/adcGetValue' */

  // Initialization of ADC IO_ADC_49 channel
  IO_ADC_ChannelInit(IO_ADC_49,
                     IO_ADC_ABSOLUTE,
                     IO_ADC_NO_RANGE,
                     IO_ADC_NO_PULL,
                     IO_PIN_NONE,
                     NULL);

  IO_ADC_ChannelInit(IO_ADC_16,
                     IO_ADC_ABSOLUTE,
                     IO_ADC_RANGE_5V,
                     IO_ADC_NO_PULL,
                     IO_PIN_NONE,
                     NULL);

  /* Start for S-Function (adcGetValue_ttc500): '<S263>/adcGetValue3' */

  // Initialization of ADC IO_ADC_56 channel
  IO_ADC_ChannelInit(IO_ADC_56,
                     IO_ADC_ABSOLUTE,
                     IO_ADC_NO_RANGE:,
                     IO_ADC_PD_10K,
                     IO_PIN_NONE,
                     NULL);

oqw
qweq
we

*в приложении вложил данный файлик

Здесь нужно найти строчки "IO_ADC_NO_RANGE:," и заменить их на "IO_ADC_RANGE_32V,".

Как это можно сделать в .m-файле, и можно ли сделать вообще?
Заранее благодарю


Теги

    20.09.2022

    Ответы

    • aBoomest
      aBoomest+942.89
      4.10.2022 17:36

      Например

      s = 'abcdefg';
      disp(s);
      s(1) = '!';
      s(7) = '?';
      disp(s);

      Результат

      abcdefg
      !bcdef?