The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Нормальный ли код получился? (Переворот строки Си)."
Версия для распечатки Пред. тема | След. тема
Форум Программирование под UNIX
Исходное сообщение [ Отслеживать ]

. "Нормальный ли код получился? (Переворот строки Си)." –1 +/
Сообщение от dcc0email (?), 16-Сен-16, 11:26 
Последний пост.
Код моего урезанного substr отрабатывает корректно только два варианта, т.е. с двумя или тремя аргументами.
substr(string 0 1)
substr(string 1)
Больше мне и не нужно было, код довольно запутанный и не аккуратный, выкладываю только для того, чтобы если кому-то придёт мысль написать свой substr, можно посмотреть, как я мыслил. Код свое отработал и переворот, и substr писались для алгоритма нерекурсивных перестановок на чистом си, в целях обучения все тому же си.
Правда, получилось не совсем чистый си, хотелось без библиотек ,  пришлось заюзать
stdlib.h , так как понадобилось преобразование типов из char в int - функция atoi

Код не чистил:

#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include <locale.h>
#ifdef UNICODE
    typedef wchar_t TCHAR;
#else
    typedef char TCHAR;
#endif
int main(int argc, char *argv[])
{
    setlocale( LC_CTYPE, ".1251" );
char *a=argv[1];

  
  if(argc < 2) {
    printf("String is no set!");
return 0;
  }
  int i = 0;
  while (a[i] != 0) {
        
        if (i > 100) {
            printf("String is too long!");
            return 0;  
            }
            ++i;
        }
if (argv[2]!=0 && argv[3]!=0 ) {

      int c_end;
      c_end = atoi(argv[3]);
      
       if (i < c_end) {
          printf("Nothing to cut!");  
           return 0;  
          }
      if (i  >=  c_end) {
  
      i=c_end;
      }
               int k=0;
               if (k ==i ) {
printf("%s", argv[1]);  
return 1;  
}
while(k !=i ) {
            
  printf("%c", argv[1][k]);
        k++;
        }
  return 1;
}
if (argv[2]!=0 && argv[3]==0 ) {
               int c_end;
                c_end = atoi(argv[2]);
      
       if (i < c_end) {
          printf("Nothing to cut!");  
          }
  
int k=c_end;
if (k > i) {
printf("%s", argv[1]);
return 1;    
}    

while(k != i ) {  
  printf("%c", argv[1][k]);
         k++;
        }
  return 1;
        
              
}

}


Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Нормальный ли код получился? (Переворот строки Си)., dcc0, 14-Сен-16, 20:10  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру