Я пытаюсь прочитать строку файла в строке и проверить, есть ли какие-либо метки, которые записаны в виде " label: ".Он проверяет наличие точки с запятой и практически просто добавляет символы перед точкой с запятой в массив символов temp
.Затем очищает temp
и использует функцию fgets для чтения следующей строки.
Это код, который я написал до сих пор:
char temp[200] = "";
while(fgets(line, len, fp) != NULL)
{
for(int i = 0; i < strlen(line); i++)
{
if (line[i] == ' ') continue;
else if(line[i] != ' ' && line[i] != ':')
{
append(temp, line[i]);
continue;
}
else if (line[i] == ':')
{
printf("Scanned label %s\n", temp);
char temp[200] = "";
}
}
}
и append
- это специальная функция, используемаядля добавления отдельных символов в массив символов temp
void append (char* str, char ch)
{
int len = strlen(str);
str[len] = ch;
str[len+1] = '\0';
}
В четырех строках текстового файла имеется одна метка для каждой строки.Вот пример входного файла:
L1: this is a sentence
L2: this is another sentence
L3: this is another sentence
L4: this is the last sentence
Мне удалось получить вывод
Scanned label
Scanned label
Scanned label
Scanned label
Но, как вы видите, я не могу распечатать содержимое массива символовtemp
.Итак, мой вопрос заключается в том, что, если есть что-то, что я могу это исправить, или есть какие-то логические недостатки в моем коде?
А что касается очистки массива символов, то, что я сделал правильно?Просто просто:
char temp[200] = "";