c - Trying to use command line ls -l argument as scanf input -


i'm trying parse through ls -l output check file permission , size. seems scanf() function not take in after space. there trick or workaround this? i'd stick using scanf if it's not possible i'm open suggestions. when run program below , print test2 "total" gets stored.

<#include stdio.h>  int main(int argc, char **argv){  char test[200]; char test2[200]; scanf("%c\n", test); for(int = 0; < 9 ; i++){     if(test[i] != '\n'){        test2[i] = test[i];     } } (int = 0; < 9; i++){     printf("%c\n", test2[i]); }  return 0; 

}

thanks. there way check if file or directory using ls -l?

however seems scanf() function not take in after space. ... scanf("%c\n", test);

it not scanf(), format used. scanf("%c\n", test); scans 1 char test (test not null character terminated) , scans , tosses white-space. continues until non-white-space found.

more want scanf(" %199[^\n]", test); fgetc(stdin); 1) scan , discard white-space, 2) scan 199 non-'\n'. 3) stop when full, eof, or '\n' detected. next character scanned , tossed.

in general. best use fgets()

if (fgets(test, sizeof test, stdin) == null) handle_eof(); test[strcspn(test, "\n")] = 0;  // lop off potential \n.  (size_t = 0; test[i]; i++){   printf("%c\n", test[i]); } 

to clear, not scanf() evil, trying to many things (io , conversions). better separate.

most scanf() format specifiers , directive ' ' not distinguish between space , '\n'. line ending critical code. fgets() seeks '\n' , treats spaces other char.


Comments

Popular posts from this blog

html - Outlook 2010 Anchor (url/address/link) -

javascript - Why does running this loop 9 times take 100x longer than running it 8 times? -

Getting gateway time-out Rails app with Nginx + Puma running on Digital Ocean -