Не компилируется и не выдает ошибок - 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';
Объяснение кода листинга программы
В данном коде происходит следующее:
- В этой строке кода идет работа со строкой
name
. - Функция
strlen()
используется для определения длины строкиname
. - Результат функции
strlen()
присваивается символу 's'. - В конце строки символа 's' присваивается значение '\0', которое является символом конца строки в C.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д