When, some time back, we talked about the โsisterlyโ (to todayโs ASP.Net) PHP way of approaching the C Sorting โinterfaceโ to a web application with C Sorting PHP exec Tutorial as shown below, it was inferred that we might approach this, in ASP.Net (using Microsoftโs Visual Studio IDE under Windows), by using a โnew Process()โ technique โฆ well, please scratch that idea โฆ Windows security has come down pretty hard on such thoughts โฆ so what we did today was compartmentalize more and allow the โC Sortingโ be handled by Windows desktop techniques and has as the โinterface methodโ the existance, or not, of files โฆ a favourite technique for us, as much as anything because โmethodologiesโ containing โfile_existsโ (or its like) are common in so many โserverโ programming languages โฆ โserverโ not โclientโ โฆ so not Javascript.
So we have โฆ
- ASP.Net (C# codebehind) code you could call ShowIsPostBack
aspx (or call it something better?!) โฆ and its helper Windows (DOS) Command Line โฆ
- Windows (DOS) Command Line batch file you could call ask
bat (which is designed to keep running, and we show with todayโs slideshow how you can use Windows Task Schedular to set it up to be run (the once) in the background, when you start your computer)
As with using PHP as the server language, the โunchangedโ programming C code you could call use_qsortc works in conjunction with ASP.Net server side language today. When we say โunchangedโ we did decide to copy the use_qsort.exe somewhere into the computerโs PATH. Why? It means no matter where you are, directory wise, on the command line, the use of โunpathedโ โuse_qsort.exeโ (or even just โuse_qsortโ) will start the program you want. This is a common requirement, so letโs go over the steps to achieve this below โฆ
- Get to Windows (DOS) Command Line โฆ
- Type
echo %PATH% โฆ take a note of one of the directories that suits and weโll call that one โC:\MyDesiredDirectoryOnThePathโ below (but you need to subsitute your โrealโ one in, for it, below) โฆ - Type in cd [path] commands to get yourself to where use_qsort.exe lives now (and after this) โฆ
- Type in copy use_qsort.exe โC:\MyDesiredDirectoryOnThePath\*.*โ
Of more than somewhat help today was ASP.NET 3.5 Unleashed by Stephen Walther โฆ thanks.
So please compare and contrast the server giants and their software integration with some Windows operating system C.
Previous C Sorting PHP exec Tutorial is shown below.
Thereโs another chapter to our C โsortingโ program in addition to the โpipingโ functionality we added with C Sorting Command Line Piping Tutorial as shown below, a couple of days ago. And itโs a pretty important chapter if you are interested in software integration, and โmeeting pointsโ. We talk about the โmeeting pointโ of web and desktop applications through the use of mechanisms with the web application server languageโs world โฆ our web server language today is PHP and its exec method, but it could be ASP.Net and a new Process() scenario if thatโs how you roll โฆ but it has to be Windows web hosting โฆ as we do with some local web serving utilizing the brilliant EasyPHP local web server โฆ we canโt show you live on rjmprogramming.com.au domain because it is a Linux web server.
Please donโt think everything is possible with this arrangement, and a designer of web functionality would be wary, so just play within reasonable restrictions, and you should be fine โฆ but donโt know about you โฆ but personally find this software integration interesting and exciting.
So today we show some (proof of concept) server side PHP taking a file_get_contents() original data source and uses some C executable, placed into the same directory as the PHP, in conjuction with the use of the exec() method to rearrange the order of the items of the original data via that C executableโs sorting functionality.
The programming C code you could call use_qsortc changing from a couple of days ago as per thislink shores up a bit of the data sophistication accepted.
The programming PHP code you could call use_qsortphp supervises the Digital Mars C executable that is created using the C code above.
Who says desktop work is irrelevant to web applications? After all, the server side languages interface to what the desktop world looks like โฆ a web server operating system. It is worth remembering that no matter how โcloudyโ things get there are still web servers at the end of all these trails.
Previous relevant C Sorting Command Line Piping Tutorial is shown below.
Hope youโve been noticing the improved usefulness, as a tool, our C โsortingโ program is becoming as, today, we add some โpipingโ functionality, to add to yesterdayโs command line switch improvements with our Windows C program that sorts arguments on the command line via the qsort method when we presented C Sorting Command Line Switch Tutorial as shown below. We feature this blog post at WordPress 4.1.1 website also with C Sorting Command Line Piping Tutorial.
Today, before we get into the โpipingโ talk we want to show you one more switch we invent โฆ
- /p โฆ to either prompt the user for input data or read it from a file via a command like โฆ
type input.file | use_qsort /r /p Throw These In 2 The Mix
Out of the โnice to havesโ we left you with yesterday weโve decided to implement โฆ
- explanatory advice if no arguments were entered (as is likely in all innocence) by the user
- control over the input and output (I/O โฆ input/output) mechanisms โฆ important for piping thoughts โฆ we may talk more on this
โฆ but left out of the picture โฆ โallow for switches anywhere, rather than assuming theyโll be entered first (but again, the switch logic has your rules)โ โฆ cโest la vie โฆ but you could improve it for this idea if you like?!
In this program, now, you may see the use of โฆ
- โpipingโ functionality, helped out by the โgetsโ function (and an understanding that input file records will always be different (again, you could improve?!)) so that the input data could come from (a mix of) โฆ
- the command line arguments (as of previous incarnations) โฆ and introduced as of this incarnation are โฆ
- interactive input from the keyboard (we refer to this as โpromptingโ but this is a bit of a misnomer of a term โฆ we donโt prompt as we want the output stream just to contain โfindingsโ, not prompt strings โฆ though, as we did with the โhelpโ output (where we used the perror function to effectively write to the โ2>โ error output stream, with that) maybe you could write a prompt to the error output stream (will, again, leave that to you, perhaps?! โฆ but for myself, I like a โcleanโ output data โsenseโ)
- read input data from a file via โ < [input.file] โ (or โtype [input.file] | use_qsort /pโ)
โฆ and (though no different to yesterday) you could also send the output to a file via โ > [output.file] โ
system(cmd); // make it a command line scenario
โฆ enabling the โpipingโ (input data) world and the โcommand line argumentโ (input data) world to meet โฆ again, a weakness is the limits on the amount of data this will work with โฆ you could consider a system of writing to temporary files instead?! โฆ up to you
qsort((void *)argv, (size_t)argc, sizeof(char *), &(*(int (*)(void const *, void const *))funcArr[mymode])); // unchanged from yesterday
What results is a pretty flexible program that is now a โtoolโ in the sense that it can interface to other command line tools and add its little bit of a โsortingโ usefulness to the โequationโ of your solution. After all, software is a collaborative process, always made up of parts.
The programming C code you could call use_qsortc changing from yesterday as per thislink.
Previous relevant C Sorting Command Line Switch Tutorial is shown below.
Yesterday we started with a Windows C program that sorts arguments on the command line via the qsort method when we presented C Sorting Primer Tutorial as shown below.
Today we show you a very useful technique to open up some functionality thoughts regards a command line program when we include some โhomemadeโ switches. Say โhomemadeโ because you decide what switch means what bit of program configuration takes place, so today we allow for two โhomemadeโ switches to our program โฆ
Today we show you a very useful technique to open up some functionality thoughts regards a command line program when we include some โhomemadeโ switches. Say โhomemadeโ because you decide what switch means what bit of program configuration takes place, so today we allow for two โhomemadeโ switches to our program โฆ
- /r โฆ to reverse the sort (NB. Windows often uses โ/โ while Unix and Linux more often use โ-โ โฆ by convention โฆ but it doesnโt have to be this way if you program differently โฆ as we said, you make the rules with your switches)
- /n โฆ to sort numerically (rather than alphabetically)
Nice to haves โฆ not done (yet) โฆ would include โฆ
- explanatory advice if no arguments were entered (as is likely in all innocence) by the user
- allow for switches anywhere, rather than assuming theyโll be entered first (but again, the switch logic has your rules)
- control over the input and output (I/O โฆ input/output) mechanisms โฆ important for piping thoughts โฆ we may talk more on this
In this program, now, you may see the use of โฆ
- function pointers โฆ pointers that point at functions within your program code โฆ cute, huh? โฆ we talked about these, also, with Function Pointers in C and C++ Primer Tutorial and we also like this link โฆ thanks
qsort((void *)argv, (size_t)argc, sizeof(char *), &(*(int (*)(void const *, void const *))funcArr[mymode]));
The programming C code you could call use_qsortc changing from yesterday as per thislink.
Previous relevant C Sorting Primer Tutorial is shown below.
As we have mentioned before, as with C String Function Timings Primer Tutorial as shown below, you donโt have to use an IDE to do C programming. There is Digital Mars C as an example of that. We have talked about the Xcode command line tools before, that frees the gcc compiler to (also) be a command line tool to write C programs from the command line separate to any IDE usage, and weโd also like to add that Windows C programmers from the days of Microsoft C, who miss it (know I do โฆ it was solid), can still write some of this code using Digital Mars C. Luckily, one of the most useful functions, as exemplified by the C code line below (and with the WordPress 4.1.1 version C Sorting Primer Tutorial) โฆ
qsort((void *)argv, (size_t)argc, sizeof(char *), isbigger);
โฆ qsort โฆ is available in Digital Mars C, as it used to work in Microsoft C.
We show it in action today sorting, alphabetically, command line arguments (on the Windows (DOS) command line doh!). It has the scope, with its interface to tailoring your own sorting โalgorithmโ function abilities, to be able to handle any type of business logic you choose, that โsortingโ jobs so often ask for.
So โฆ get โฆ sorted โฆ with our C code you could call use_qsortc based on an idea out of a Microsoft C manual and Digital Mars compilable via (the taxing chortle, chortle) โฆ
dmc use_qsort
โฆ yes โฆ no make files required here, nor IDE menus โฆ but brush up on your pointers, perhaps.
As a Windows programming afficianardo would tell you โฆ desktop functionality opens you up to many scheduling and batch mode processing ideas often crucial to the best productivity tools in software. It is no wonder that the webโs curl is so popular so that a bit of these software strengths from the desktop days can be brought to bear on the web application world we increasingly encounter today.
Previous relevant C String Function Timings Primer Tutorial is shown below.
You donโt have to use an IDE to do C programming. There is Digital Mars C as an example of that. We have talked about the Xcode command line tools before, that frees the gcc compiler to (also) be a command line tool to write C programs from the command line separate to any IDE usage.
So it is today with this tutorial, where we work with Digital Mars C, to time some inhouse and C string library (string.h) library string manipulation functionality. If you get to compile (recommend Digital Mars C) and run this tutorialโs download at a Windows Command Line (prompt) you will see how fast C is, working way down there near the kernel level. So the second accuracy of time(NULL) wonโt pass muster for the timings, and instead, here, we use the clock() functionality to get the refinement required to have it mean anything. Could be affected by so many other things anyway, like what else is running, but is instructive as to what you might have thought was the fastest method. Personally, love using strstr() to find strings within strings, but, as you can see from the numbers, there are better choices such as strchr() and strpbrk() โฆ personally, Iโm affronted, gobsmacked, insulted, resigned โฆ impersonally, Iโm anti-affronted, anti-gobsmacked, anti-insulted, anti-resigned โฆ the nearby ants, antily-anti-affronted, antily-anti-gobsmacked, antily-anti-insulted, antily-anti-resigned.
So feel free to download the C programming source code here and rename it to timingsc
Hope you enjoy this tutorial showing you some command line C dmc (Digital Mars) compilation work.
A really helpful tutorial for code above to do with using clock() is shown here โฆ thanks.
A really helpful tutorial for C string functionality via string.h is shown here โฆ thanks.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
If this was interesting you may be interested in this too.
19 Responses to C Sorting ASP.Net Primer Tutorial