Escreva no arquivo .txt?

149

Como posso escrever um pequeno pedaço de texto em um .txtarquivo? Estou pesquisando no Google por mais de 3-4 horas, mas não consigo descobrir como fazê-lo.

fwrite(); tem tantos argumentos, e eu não sei como usá-lo.

Qual é a função mais fácil de usar quando você deseja escrever apenas um nome e alguns números em um .txtarquivo?

Edit: Adicionado um pedaço do meu código.

    char name;
    int  number;
    FILE *f;
    f = fopen("contacts.pcl", "a");

    printf("\nNew contact name: ");
    scanf("%s", &name);
    printf("New contact number: ");
    scanf("%i", &number);


    fprintf(f, "%c\n[ %d ]\n\n", name, number);
    fclose(f);
Stian Olsen
fonte
@ user1054396: O problema não está na impressão (que você acertou), mas na leitura via scanf. Se você ler %s, deverá ler em um buffer de tamanho suficiente, não em um único caractere.
Kerrek SB 20/07

Respostas:

268
FILE *f = fopen("file.txt", "w");
if (f == NULL)
{
    printf("Error opening file!\n");
    exit(1);
}

/* print some text */
const char *text = "Write this to the file";
fprintf(f, "Some text: %s\n", text);

/* print integers and floats */
int i = 1;
float py = 3.1415927;
fprintf(f, "Integer: %d, float: %f\n", i, py);

/* printing single chatacters */
char c = 'A';
fprintf(f, "A character: %c\n", c);

fclose(f);

fonte
1
Você sabe que escreve π como pi, não py?
Wouterr 01/04
21
FILE *fp;
char* str = "string";
int x = 10;

fp=fopen("test.txt", "w");
if(fp == NULL)
    exit(-1);
fprintf(fp, "This is a string which is written to a file\n");
fprintf(fp, "The string has %d words and keyword %s\n", x, str);
fclose(fp);
cppcoder
fonte
-4

Bem, você precisa primeiro obter um bom livro sobre C e entender o idioma.

FILE *fp;
fp = fopen("c:\\test.txt", "wb");
if(fp == null)
   return;
char x[10]="ABCDEFGHIJ";
fwrite(x, sizeof(x[0]), sizeof(x)/sizeof(x[0]), fp);
fclose(fp);
Jeeva
fonte
2
Esse é um trabalho árduo comparado ao uso de fprintf()ou fputs(). Especialmente fprintf()porque alguns números também devem ser escritos.
Jonathan Leffler
6
E "c:\\test.txt"é um nome de arquivo improvável; a pergunta está etiquetada como linux .
21412 Keith Thompson
13
-1 O OP solicitou a função mais fácil de usar. E para escrever texto, mas você está abrindo o arquivo no modo binário. E é uma prática ruim deixar de relatar um erro em aberto.
Jim Balter