Как правильно добавить символы в строку C на языке C? - PullRequest
1 голос
/ 19 февраля 2020

В настоящее время я пишу программу, которая может go через текстовый файл и анализировать каждый символ. Если символ alphanumeri c и правильный идентификатор, я хочу иметь возможность добавить этот символ в строку. Мой текущий код для этого таков:

char final[256]={'\0'}; 
unsigned int len = 0;
static int current = ' ';
static int temp = ' ';

if(isalpha(current)){
   final[0]=current;
   len = 1;
   for (temp = fgetc(file); isalnum(temp) || temp == '_';){
      for(int i = len; i <= len; i++){
      final[i] = temp;
      len++;
  }
}

final[len] = '\0';

Правильно ли я подхожу к этой проблеме текущим способом? Можете ли вы добавить символы в индексные позиции строк в C?

1 Ответ

1 голос
/ 19 февраля 2020

Сам код прост.

char final[256];
unsigned int len = 0;

final[len] = fgetc(file); //we read the character but do not "approve" it.
//while (!isalpha(final[len])) final[len] = fgetc(file); //uncomment if you want to read the file until a valid identifier begins. Also it's barely an example: it lacks EOF check.

if(isalpha(final[len])){
   len = 1; //We "approve" the first character
   while ( isalnum( final[len] = fgetc(file) ) || final[len] == '_') //In C, conditions are checked left to right so if isalnum()==0 we check for '_' with correctly updated final[len] value.
      len++; //We "approve" the next character;
  }
}

final[len] = 0; //The last character has been read but not "approved" so we overwrite it with null-term.

По поводу второго вопроса ... да, вы можете добавить символ в индексированную позицию. Но это должна быть либо последняя позиция, либо она перезапишет существующую. Если вы хотите вставить несколько символов, сначала используйте функцию memmove().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...