#include #include #include #include #include #include #include int main(int argc, char** argv) { if (argc < 2) { std::cout << "invalid input" << std::endl; return 1; } const std::string fpath = argv[1]; struct stat st; int ret = stat(fpath.c_str(), &st); if (ret != 0) { std::cout << "failed statting: " << fpath << ", " << strerror(errno) << std::endl; return 1; } FILE* fin = fopen(fpath.c_str(), "r"); if (!fin) { std::cout << "Failed opening: " << argv[1] << std::endl; return 1; } char* buf = new char[st.st_size]; memset(buf, 0, st.st_size); size_t r = fread(buf, 1, st.st_size, fin); fclose(fin); if (r != st.st_size) { std::cout << "read: " << r << "/" << st.st_size << " bytes" << std::endl; delete[] buf; return 1; } std::vector lines; std::string l; for (size_t t = 0; t < st.st_size; ++t) { if (buf[t] == '\n') { lines.push_back(l); l = std::string(); continue; } l += buf[t]; } std::cout << "there are: " << lines.size() << " lines" << std::endl; delete[] buf; return 0; }