C - Работа с txt файлове

Автор Тема: C - Работа с txt файлове  (Прочетена 1660 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

Niksanbg94

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 2
C - Работа с txt файлове
« -: 11 Декември 2014, 23:29:01 »
Здравейте ! Искам да попитам по какъв начин мога да отворя txt файл , като не съм го определил в кода на програмата , а се въвежда името му със началото на програмата. И същото условие обаче за създаване на файл.Ето какво съм написал но дава грешка, рових се в интернет но не можах да намеря точно това което ми трябва.За първи път работя с файлове може отговорът на въпроса ми да е много лесен , но когато не знае човек и лесните отговори ги открива трудно . Ето моето грешно творение :
Код: C++
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. int main()
  5. {
  6.         char ime[1000];
  7.         printf("Vuvedeto imeto na faila \n");
  8.         scanf("%[^\n]s",&ime);
  9.         FILE *file=fopen("C:\\ %s",ime,"r");
  10.         printf("%c\n", fgetc(file));
  11.         fclose(file);
  12.  
  13.         _getche();
  14.         return 0;
  15. }

Как трябва да бъде написан този ред (FILE *file=fopen("C:\\ %s",ime,"r"); ) със сигурност метода ми е грешен.Благодаря предварително :)
« Последна редакция: 11 Декември 2014, 23:58:51 от Avalanche »

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: C - Работа с txt файлове
« Отговор #1 -: 12 Декември 2014, 18:17:35 »
Здрасти.
main функцията има два параметъра. Единия - argc - казва с колко, а другия - argv - с кои точно параметри е извикана програмата
Пример:
Файл test.cpp
Код: C++
  1. #include <fstream>
  2. #include <iostream>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.    std::fstream f;
  7.    f.open(argv[1], std::ios::out);
  8.    if (!f.good())
  9.    {
  10.       std::cerr << "couldnt open" << argv[1] << std::endl;
  11.    }
  12.  
  13.    f << "Test" << std::endl;
  14.    f.close();
  15.  
  16.    return 0;
  17. }


C варианта test.c
Код: C
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.    FILE *f;
  6.    f = fopen(argv[1], "w+");
  7.    if (!f)
  8.    {
  9.       printf("Could not open: %s\n", argv[1]);
  10.       exit(0);
  11.    }
  12.  
  13.    fprintf(f, "Test");
  14.    fflush(f);
  15.    if(fclose(f) != 0) {
  16.       printf("Closing the file was too hard for me.");
  17.    }
  18.  
  19.    return 0;
  20. }


След компилация викаш програмата с
Код: Text
  1. test.exe "test.txt"

Естествено този код не е съвсем точен. Трябва да правиш проверка дали има изобщо подадени някви параметри и тнт.
« Последна редакция: 12 Декември 2014, 18:31:46 от kjufte »

Niksanbg94

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 2
Re: C - Работа с txt файлове
« Отговор #2 -: 13 Декември 2014, 14:20:04 »
Благодаря за отговора :) Но в този код има доста неща които ги виждам за пръв път и не са ми ясни, предложиха ми друг начин по който да го направя , и написах ето това , но ми дава грешки rsize_t' differs in levels of indirection from 'char [255]' , file' : undeclared identifier,  'FILE *' differs in levels of indirection from 'int'  ,  fclose' : different types for formal and actual parameter 1 .. Ето и самият код :
Код: C++
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. #include<string.h>
  5. int main()
  6. {
  7.    char c;
  8.    char path[255]="C:\\";
  9.    char ime[255];
  10.    printf("Vuvedeto imeto na faila \n");
  11.    scanf_s("%s",&ime);
  12.    strcat_s(path,ime);
  13.    FILE *file=fopen(path,"r");
  14.    do
  15.    {
  16.            c=fgetc(file);
  17.            printf("%c",c);
  18.    }
  19.         while(c!=EOF);
  20.         fclose(file);
  21.         _getche();
  22.         return 0;
  23. }
Ако грешката е лесно поправима ще съм много благодарен ако помогнете с начин за поправяне . Кода е смесица от това което съм чел от няколко форума явно за това не се е получило напълно :( . Благодаря предварително :)


Промяна админ: Ползвай код тага за да се вижда по-ясно какъв код постваш. :)
« Последна редакция: 13 Декември 2014, 19:28:36 от Avalanche »

dobito6

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 1
Re: C - Работа с txt файлове
« Отговор #3 -: 15 Декември 2014, 22:42:30 »
Код: C++
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. int main() {
  6.     //въмеждаш името
  7.     string s;
  8.     cin>>s;
  9.     //добавяш разширението
  10.     s=s+".txt";
  11.     //декларираш и отрваряш файла
  12.     fstream f;
  13.     // нали знаеш, че за да отвориш файл трябва низа ти да бъде масив от тип char
  14.     // функцията c_str представя един string като масив от тип char
  15.     f.open(s.c_str());
  16.     // извеждаш нещичко в файла, за да знаеш че си го отворил успешно
  17.     f<<"We open this file in C++"<<endl;
  18.     return 0;
  19. }
  20.  
  21. [table][tr]
  22. [td][/td]
  23. [/tr]
  24. [/table]
« Последна редакция: 27 Декември 2014, 17:48:57 от HD »