работа с файлами

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by A.N.O.N.I.M, 31 May 2011.

  1. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    Вообщем программа меняет в тексте определенное
    словосочетание букв.Сам цикл
    Code:
    for(int i = 0; i < 200; i++)//цикл замены в тексте словосочетаний xyoe на zpss
            if(stroka[i] == 'x' && stroka[i+1] == 'y' && stroka[i+2] == 'o' && stroka[i+3] == 'e')
            {
                    stroka[i] = 'z'; 
                    stroka[i+1] = 'p'; 
                    stroka[i+2] = 's';
                    stroka[i+3] = 's;
            }
    printf(stroka);//вывод получившегося текста
    

    Как сделать так чтобы программа брала данные из текстового файла,имя которого надо ввести с клавиатуры,а затем сохраняла измененный текст в другом текстовом файле имя которого тоже вводится с клавиатуры.Результат изменения записывался в текстовый файл и показывался в окне программы.

    p.s нашел только с уже готовыми файлами,а чтобы сам вводил имя и создаввался текстовый файл нет
     
    #1 A.N.O.N.I.M, 31 May 2011
    Last edited: 31 May 2011
  2. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
  3. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    там по уже вписанному файлу ,а я должен сам вводить

    char *fname = "some_file.txt"; наприммер
    а я должен сам вводить
     
  4. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Чорд!
    Сорри, мужиГ, уже забыл С, но в Pascal была такая функция readln(s); которая ждала пока ты введешь данные c клавиатуры.
    НЕУЖЕЛИ в С такой НЕТУ?
    P.S. 1 день 14 часов 26 минут на форуме чем занимался то?)))
     
  5. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    Регистрация: 20.05.2010 второй год пошел

    я найти не могу
     
  6. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Во: http://tinyurl.com/3lr5jdm статья Глава 5. Средства ввода/вывода

    P.S. BrainDead спасибо за идею, кульный сервис)))
     
  7. Amur[чик]

    Amur[чик] New Member

    Joined:
    11 May 2011
    Messages:
    25
    Likes Received:
    1
    Reputations:
    -5
    а что мешает сделать переменную которой присваивается строка пути файла ?
     
  8. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    Code:
    
    #include <conio.h>
    #include <stdio.h>
    #include <locale.h> 
    #include <string.h>
    
    int main()
    {
        setlocale(LC_ALL,"Rus");
        char name[200];
        char str[100];
    printf("\n Введите имя файла: ");   //спрашиваешь имя
    gets(name);       //считываешь имя
    FILE *f = fopen(name,"r");
    if (f == NULL)
          {
    		printf("Error in open.\n"); 
          }
    fprintf(f,"%c\n",name);
    for(int i = 0; i < 20; i++)
            if( str[i] == 'a' && str[i+1] == 'b' && str[i+2] == 'c')
            {
                    str[i] = 'd'; 
                    str[i+1] = 'e'; 
                    str[i+2] = 'f';
            }
    fprintf(f,"%c\n",str);
    fclose(f);
    getch() ;
    }
    
    написал начало ввод имени файла,но если пишу не верное то пишет ошибку так и должно быть,но если правильно то пустой экран текста нет в программе,хотя в файле он есть
     
  9. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Либо я слепой либо я хз.
    А ну ткни мну носом в строку кода в которой ты (по твоему мнению) производишь чтение из файла!
    И еще в строку, в которой ты (по твоему мнению) делаешь вывод на экран!
     
    #9 xophet, 31 May 2011
    Last edited: 31 May 2011
  10. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    Исправь как должно быть
     
    #10 A.N.O.N.I.M, 31 May 2011
    Last edited: 1 Jun 2011
  11. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    так я C не знаю, как я могу исправить то, но и так видно что из файла ты не читаешь и на экран не выводишь, а что такое fprintf спроси у гугла, он тебе ТАКОООЕ понарасскажет...
    P.S. и слово "ПОЖАЛУЙСТА" никто не отменял :D
     
    #11 xophet, 31 May 2011
    Last edited: 31 May 2011
  12. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    scanf
    fopen
     
  13. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    Code:
    #include <conio.h>
    #include <stdio.h>
    #include <locale.h> 
    #include <string.h>
    
    int main()
    {
        setlocale(LC_ALL,"Rus");
        char name[200];
        char str[200];
    printf("\n Введите имя файла: ");   //спрашиваешь имя
    gets(name);       //считываешь имя
    FILE *f = fopen(name,"r");
    fscanf(f,"%c\n",str);/* чтение из файла */
    if (f == NULL)
          {
    		printf("Ошибка открытия файла.\n"); 
          }
    for(int i = 0; i < 200; i++)
            if( str[i] == 'a' && str[i+1] == 'b' && str[i+2] == 'c')
            {
                    str[i] = 'd'; 
                    str[i+1] = 'e'; 
                    str[i+2] = 'f';
            }
    
    fprintf(stdout, "%c", str); /* вывод на экран */
    fprintf(f, "%s",name); /* писать в файл */
    fclose(f);
    getch() ;
    }
    
    
    что щас неправильно
     
  14. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Имелось в виду "подскажите пожалуйста, что сейчас не правильно?"
    Если да, то вот это:
    Code:
    if (f == NULL)
          {
    		printf("Ошибка открытия файла.\n");
                                return(1); 
          }
    по логике должно идти до чтения из файла.

    А ты уверен, что
    Code:
    for(int i = 0; i < 200; i++)
    не превысит длину строки?

    И что значит "неправильно" в чем это проявляется? нет вывода на экран?

    А почему ты в одном месте используешь вывод на экран как
    printf("Ошибка открытия файла.\n");
    а во втором как
    fprintf(stdout, "%c", str); /* вывод на экран */
    ?
     
  15. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    Code:
    #include <conio.h>
    #include <stdio.h>
    #include <locale.h> 
    #include <string.h>
    #include <iostream>
     
    int main(int argc, char* argv[])
    {
        setlocale(LC_ALL,"Rus");
        char name[200];
        char str[200];
            printf("\n Введите имя файла: ");   //спрашиваешь имя
            gets(name);       //считываешь имя
            FILE *f = fopen(name,"r");
            if (f == NULL)
            {
                    printf("Ошибка открытия файла.\n"); 
                    exit(1);
            }
            printf("\nСодержимое файла: \n");
            while(!feof(f))//пока не достигнут конец файла читаем построчно его и выводим
            {
                    fgets(str,200,f);
                    printf("%s",str);
            }
            fclose(f);
    getch() ;
    }
    
    
    программа должна показывать текст из файла в программе уже измененный по циклу.
    и еще она должна сохранять измененный текст в файл имя которого тоже надо вввсети с клавиатуры в программе
     
  16. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    Я прошу прощения, но ты хоть сам понимаешь, что пишешь?
     
  17. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    для работы с файлами не приходилось писать
     
  18. xophet

    xophet Member

    Joined:
    16 Apr 2011
    Messages:
    617
    Likes Received:
    49
    Reputations:
    5
    В общем мое личное мнение, что тебе нужно сначала прочитать некоторое количество литературы по программированию в общем и по языку С в частности. Удачи.
     
  19. A.N.O.N.I.M

    A.N.O.N.I.M Banned

    Joined:
    20 May 2010
    Messages:
    3
    Likes Received:
    3
    Reputations:
    0
    ладно тему удаляйте