C is like a toolkit, but the only tools you get are the barest minimum you need to make all the other tools.
This is why it is exceptionally painful to process strings in C. The string.h library is exceptionally minimal - whereas other languages have functions such as substr to, for instance, get a substring within a string, C has none of this, you have to write it yourself.
This isn't necessarily a bad thing - you can create very very fast things using C, as anything you create can be fit for purpose and completely efficient, however, as soon as you start to encroach on the world of generic applications, you risk falling into the slowness of other languages with other libraries.
Basically, C can be one of the best languages in the world provided you have a stupidly high amount of time. You can do anything you want, build operating systems, games, window managers, but it takes a lot of time.
This is why C made my experience of building a chatbot absolute hell. See, chatbots don't need to be that fast. They would be fine written in python, java, even something like PHP or Ruby.
Computers get faster, whereas code does not. It would make far more sense to have better, cleaner code written in a higher level language than bother maintaining complex C for something as simple as a bot.
Back on topic. The project has taught me a lot about C and its many libraries, and also forced me to search the internet for answers which has, in turn taught me more. I know that fgets is much safer than gets for getting input, and that it is also better than scanf due to not hiccuping on space characters. C is good at processing files themselves (through fgets) but not strings.
It has also made me realise how reliant we are on huge numbers of if selections if we do not take into account custom data structures such as lists and trees and recursive operations.
The project has also increased the amount of experience I have dealing with Visual Studio errors and warnings and how they affect my workflow.
Keywords: se1sa5