Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <malloc.h>
- #include <stdlib.h>
- #include <string.h>
- #define NUM 100
- void vivod(char **strStr, int *N){
- for(int i=0; i<*N; i++){ printf("%s\n", strStr[i]); } //вывод N строк
- printf("\n");
- }
- void moveStr(char **strStr, int *N){ //сдвиг строк, удаление 0-ой и освобождение N-ой для записи новой
- int i;
- printf("удалить: %s\n", strStr[0]);
- printf("последняя строка: %s\n", strStr[*N-1]);
- for(i=0; i<=*N; i++){
- printf("%s<>%s|",strStr[i], strStr[i+1] );
- strStr[i]=strStr[i+1];
- }
- vivod(strStr, N);
- }
- void readFile(char **strStr, char *Fname, int *N){
- int i=0;
- FILE *Ftext;
- Ftext=fopen(Fname, "r");
- printf("файл открыт\n");
- fgets(strStr[i], NUM-2, Ftext);
- do{ //чтение строки из файлa
- printf("новая строка %s\n", strStr[i]);
- if(i<*N){ i++; }
- else{ moveStr(strStr, N);}
- }while(fgets(strStr[i], NUM-2, Ftext));
- fclose(Ftext);
- printf("файл закрыт\n");
- }
- int main(char argc, char *argv[]){
- char *str[NUM], **strStr, *Fname;
- int N=10, mode=0, i=0;
- for(int argNumb=1; argNumb<argc; argNumb++){ //обработка аргументов программы
- if(strcmp(argv[argNumb], "--help")==0 || strcmp(argv[argNumb], "-h")==0){ mode=0; }// help
- else if(strcmp(argv[argNumb], "-N")==0 || strcmp(argv[argNumb], "-n")==0){ N=atoi(argv[argNumb+1]); argNumb++; } // N
- else if(strcmp(argv[argNumb], "-p")==0){ mode=1; Fname=argv[argNumb+1]; argNumb++; }// чтение из файла
- }
- for(i=0; i<NUM; i++){
- str[i]=malloc(NUM*sizeof(char));
- }
- strStr=malloc((N+2)*sizeof(char*)); //выделяем память под массив указателей
- for(i=0; i<(N+1); i++){
- strStr[i]=&str[i][0]; //указываем на строки
- }
- switch(mode){ //выбор способа ввода
- case 0: printf("-n -- значение N (по умолчанию N=10);\n-p -- путь к файлу;\n"); break;
- case 1: readFile(strStr, Fname, &N); vivod(strStr, &N); break;
- //case 2: break;
- }
- free(strStr);
- free(*str);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement