#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUFSIZE 64
char * getl() {
char *buf;
size_t bufsize = BUFSIZE;
size_t inbuf = 0;
buf = malloc(bufsize);
if(!buf) return NULL; /* ошибка */
do {
if(inbuf >= bufsize - 1){ /* если в буфере кончается место */
bufsize = bufsize + (bufsize>>1); /* умножение на 1.5 */
if(!(buf = realloc(buf, bufsize))) return NULL; /* пытаемся увеличить буфер до нового размера, проверяем получилось ли */
}
if(!fgets(buf+inbuf, bufsize-inbuf, stdin)) break;
inbuf += strlen(buf+inbuf);
} while(buf[inbuf - 1] != '\n');
return buf;
}
int main(){
char * l;
l = getl();
if(l){
printf("line: %s\nstrlen: %zd\n", l, strlen(l));
free(l);
}
return 0;
}
на врача/юриста/кого-то ещё выучился и работаешь рабочий день, остальное время свободно.
Group {
name: "cpp_os_specific"
prefix: "src/cpp/utils/"
files: {
if (qbs.targetOS.contains("windows"))
return ["utils_windows.cpp", "utils.h"];
if (qbs.targetOS.contains("linux"))
return ["utils_linux.cpp", "utils.h"];
}
}
import qbs 1.0
Product {
type: "application"
name: "timer_qml"
consoleApplication: false
Group {
name: "cpp"
prefix: "src/cpp/"
files: ["*.cpp", "*.h"]
}
Group {
name: "cpp_os_specific"
prefix: "src/cpp/utils/"
files: {
if (qbs.targetOS.contains("windows"))
return ["utils_windows.cpp", "utils.h"];
if (qbs.targetOS.contains("linux"))
return ["utils_linux.cpp", "utils.h"];
}
}
Group {
name: "resources_and_qml"
prefix: "src/qrc/"
files: ["*.qrc", "*.qml"]
}
Depends {
name: "Qt"
submodules: {
if (qbs.targetOS.contains("windows"))
return ["core", "widgets", "gui", "sql", "quick", "qml"];
if (qbs.targetOS.contains("linux"))
return ["core", "widgets", "gui", "sql", "quick", "qml", "x11extras"];
}
}
Depends {
name: "cpp"
}
cpp.staticLibraries: {
if (qbs.targetOS.contains("windows"))
return ["user32"];
else
return [];
}
cpp.cxxFlags: {
if (qbs.toolchain.contains("gcc") || qbs.toolchain.contains("mingw"))
return ["-std=c++11"];
else
return [];
}
cpp.dynamicLibraries: {
if (qbs.targetOS.contains("linux"))
return ["Xss", "X11"];
else
return [];
}
Group {
name: "App itself"
fileTagsFilter: parent.type
qbs.install: true
qbs.installDir: "bin"
}
}