Не компилируется и не выдает ошибок - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Не компилируется код в gcc и при этом консоль не пишет никаких ошибок, в чем прокол?:
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
 
bool cut_name(char *s)
{
    int i, uid;
    char *ptr;
    char *name = strtok(s, ":");  // получаем первое слово (имя пользователя)
 
    for (i = 0; i < 2; i++) {  // получаем ещё два слова (одно пропускаем, а второе - номер пользователя)
        ptr = strtok(NULL, ":");
        if (!ptr)
           return false;
    }
    uid = atoi(ptr);  // переводим имя пользователя из строки в число
    s[strlen(name)] = '\0';  // в исходной строке оставляем только имя пользователя
    //if (uid < 1000)   // номера меньше 1000 - это системные пользователи... их будем пропускать
        return false;
 
    return true;
}
 
int main()
 
{
FILE * mf=fopen ("C:TEST.txt","r"); //etc/passwd
    char lines[100][1000];
    int nl = 0, nlmax = 100;
    int i;
 
    while (nl < nlmax && fgets(lines[nl], 1000, mf)) {
        char *p = strrchr(lines[nl], '\n');
        if (p)
            *p = '\0';
        nl++;
    }
    
    for (i = 0; i < nl; i++)
        printf("%s\n", cut_name(lines[i]));
       
}

Решение задачи: «Не компилируется и не выдает ошибок»

textual
Листинг программы
s[strlen(name)] = '\0';

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. В этой строке кода идет работа со строкой name.
  2. Функция strlen() используется для определения длины строки name.
  3. Результат функции strlen() присваивается символу 's'.
  4. В конце строки символа 's' присваивается значение '\0', которое является символом конца строки в C.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы