Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <utu3qg$33j67$1@i2pn2.org>
Deutsch   English   Français   Italiano  
<utu3qg$33j67$1@i2pn2.org>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder6.news.weretis.net!i2pn.org!i2pn2.org!.POSTED!not-for-mail
From: fir <fir@grunge.pl>
Newsgroups: comp.lang.c
Subject: Re: saving fileXXX.bmp
Date: Tue, 26 Mar 2024 10:17:12 +0100
Organization: i2pn2 (i2pn.org)
Message-ID: <utu3qg$33j67$1@i2pn2.org>
References: <utpl9q$2u0jk$1@i2pn2.org> <utq5qj$2ummn$1@i2pn2.org> <utq6qd$jtaq$1@dont-email.me> <utrbig$30267$3@i2pn2.org> <utsfnb$18bvo$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Tue, 26 Mar 2024 09:17:06 -0000 (UTC)
Injection-Info: i2pn2.org;
	logging-data="3263687"; mail-complaints-to="usenet@i2pn2.org";
	posting-account="+ydHcGjgSeBt3Wz3WTfKefUptpAWaXduqfw5xdfsuS0";
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0 SeaMonkey/2.24
In-Reply-To: <utsfnb$18bvo$1@dont-email.me>
X-Spam-Checker-Version: SpamAssassin 4.0.0
Bytes: 6132
Lines: 160

jak wrote:
> fir ha scritto:
>> jak wrote:
>>> fir ha scritto:
>>>> fir wrote:
>>>>> i want to save bitmap (when using editor) but i dont wannt
>>>>> to pen a dialog for saving ui just wana do quicksave but not replace
>>>>> the file already exist so i want to maybe use such scheme i will sawe
>>>>>
>>>>> "painting001.bmp" and if there is such number i will just increase
>>>>> the number to 002 if such exist i will use 003 and so on
>>>>>
>>>>> do yu thing it is standable to use c std lib (and probably just
>>>>> fopen fclose to detect if that file already exist of there is a need
>>>>> to use some specific windows functions?
>>>>>
>>>>> i never used it though - though maybe i could becouse code
>>>>> that is able to walk on directories and read all files may be handy
>>>>> for various practical usage (liek finding something , removing
>>>>> duplicates etc)
>>>>
>>>> the question is if if somoene would work longer and had 1000 bitmaps
>>>> in folder if this will not slow down, or still be fast etc...could
>>>> check
>>>> experimentally but even then i wouldnt be sure if this is kinda
>>>> optimal or wastefull way
>>>
>>> In order not to manage too many differences between compilers you could
>>> try this way:
>>>
>>> #include <stdio.h>
>>> #include <limits.h>
>>>
>>> int main()
>>> {
>>>      char pref[50] = "bmp_file_",
>>>           cmd[1024],
>>>           str[PATH_MAX];
>>>      int  seq;
>>>      FILE *fp, *f;
>>>
>>>      sprintf(cmd, "c:\\windows\\system32\\cmd.exe /c dir /b /o:-n %s???
>>> 2>nul", pref);
>>>
>>>      if((fp = popen(cmd, "rt")) != NULL)
>>>      {
>>>          if(fgets(str, PATH_MAX, fp) != NULL)
>>>          {
>>>              sscanf(str, "%[^0-9]%3d%*", pref, &seq);
>>>              sprintf(str, "%s%03d", pref, ++seq);
>>>          }
>>>          else
>>>              sprintf(str, "%s%03d", pref, 1);
>>>
>>>          pclose(fp);
>>>
>>>          if((f = fopen(str, "r")) == NULL)
>>>          {
>>>              if((f = fopen(str, "w")) == NULL)
>>>                  printf("cannot create %s", str);
>>>          }
>>>          else
>>>              printf("%s already exist", str);
>>>
>>>          if(f != NULL) fclose(f);
>>>      }
>>>      else
>>>          printf("cannot open process");
>>>
>>>      return 0;
>>> }
>>>
>>> This piece of code is only used to give the idea and is not well tested.
>>
>>
>> that is almost for sure bad - its liek running separate console program
>> to add two strings or numbers
>>
>
> I knew you would have given a similar answer but if you agree to open
> thousands of files to find the last of them, then you could accept that
> solution. It does not only do what you say because the system call is
> looking for the file for patterns and reverses the order of the list.
> All things you should do in your program. In any case, on Windows
> systems there are FindFirst/FindNext functions for this type of
> operations. Below is an example where I replace the system call with a
> function that uses the functions given before. The convenience of the
> system call is that on systems *nix works by simply replacing the call
> with "/usr/bin/ls -1r .......".
>
> #include <stdio.h>
> #include <limits.h>
> #include <stdbool.h>
> #include <windows.h>
>
> bool FindLastOf(char [], char *);
>
> int main()
> {
>      char pref[] = "bmp_file_",
>           f2find[50],
>           str[PATH_MAX];
>      int  seq;
>      FILE *f;
>
>      sprintf(f2find, "%s????", pref);
>      if(FindLastOf(f2find, str))
>      {
>          sscanf(str, "%[^0-9]%4d%*", pref, &seq);
>          sprintf(str, "%s%04d", pref, ++seq);
>      }
>      else
>          sprintf(str, "%s%04d", pref, 1);
>
>      if((f = fopen(str, "r")) == NULL)
>      {
>          if((f = fopen(str, "w")) == NULL)
>              printf("cannot create %s", str);
>      }
>      else
>          printf("%s already exist", str);
>
>      if(f != NULL) fclose(f);
>
>      return 0;
> }
>
> bool FindLastOf(char what[], char *result)
> {
>      WIN32_FIND_DATA fdF;
>      HANDLE hF= NULL;
>      bool ret = false;
>
>      *result = '\0';
>      if((hF = FindFirstFile(what, &fdF)) != INVALID_HANDLE_VALUE)
>      {
>          do
>              if(strcmp(fdF.cFileName, result) > 0)
>                  strcpy(result, fdF.cFileName);
>          while(FindNextFile(hF, &fdF));
>          ret = true;
>          FindClose(hF);
>      }
>      return ret;
> }
>
> Not even this piece of code is well tested and is just an example.
>
> Unfortunately, on the systems where the opendir/readir functions are
> available instead of FindFirst/FindFext, the work will be more difficult
> because they do not have the receipt for patterns.
>

im not sure what you do your style is unclear to me esp i found name 
FindLastOf possibly misleading - what last of it founds?


wait a bit maybe i will wrote you how i would od it i got my library 
sickle.c which is able to read list of those names to container in ram 
and then operate on this