2017-02-23 8 views
0

Прямо сейчас, что у меня есть это:Укажите расширение файла

#include <stdio.h> 
#include <conio.h> 
#include <string.h> 

int main() 
{ 
    char fname[100]; 
    FILE* fp; 
    memset(fname, 0, 100); 

    /* ask user for the name of the file */ 
    printf("enter file name: "); 
    gets(fname); 

    fp = fopen(fname, "w"); 

    /* Checks if the file us unable to be opened, then it shows the 
     error message */ 
    if (fp == NULL) 
     printf("\nError, Unable to open the file for reading\n"); 
    else 
     printf("hello"); 
    getch(); 
} 

Эта функция просто отлично, но есть способ, которым я могу заставить его сохранить как .txt или .data или что-то? Сейчас он просто сохраняет имя, которое вы вводите без расширения. Помимо запроса пользователю просто ввести имя и расширение, я не могу придумать, как это сделать. Я имею в виду, он все еще отлично подходит для чтения/записи, я просто думаю, что расширение было бы неплохо.

+4

man strcat ..... – pm100

+1

1) '#include ' нестандартный заголовок 2) 'int main (void)' 3) 'memset (fname, 0, 100);': nonsense 4) 'printf («введите имя файла:»); 'wont be flushed, добавьте '\ n' 5)' gets (fname); 'dont use gets. 6) 'getch();': нестандартная функция 7) '}' main должен возвращать int; ваш ничего не возвращает. 8) Каков был ваш вопрос? – wildplasser

+0

@wildplasser Я скопировал это отсюда: http://stackoverflow.com/a/25950349/7471023 Я не пытался сделать его совершенным, просто функциональным. – hego64

ответ

1

расширить свой комментарий:

strcat(fname, ".txt"); 
0

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

char *strcat(char *destination, const char *source);

source это новый текст, который вы хотите добавить (в вашем случае расширения), а destination где будет добавлен новый текст. Если destination не достаточно большой, то поведение не определено.

Также можно использовать функцию snprintf, чтобы добавить текст, который более безопасен, так как он принимает аргумент размера.

0

Я понял. Кредит принадлежит моему другу, который показал это мне ранее сегодня.

int main() 
{ 
    FILE *Fileptr; 
    char filename[50]; 
    char file[50]; 
    int c; 

    printf("What do you want to name your file?"); 
    scanf("%s", filename); 

    sprintf(file, "%s.txt", filename); 

    Fileptr = fopen(file, "w"); 
    fprintf(Fileptr, "Data goes here"); 
    fclose(Fileptr); 

    return 0; 
} 

Гораздо проще, чем то, что я делал.