COLUNA 1: Vamos escrever um programa que solicita ao usuário os nomes e casas de três alunos. Mas em vez de apenas imprimir o seu nomes e casas para a tela, vamos em vez salvar as informações para o disco. Em outras palavras, vamos criar, por exemplo, um arquivo CSV arquivo, para valores separados por vírgulas, que na verdade é apenas um arquivo de texto que programas como o Excel ou Numbers pode abrir e, efetivamente, salvar aqueles nomes e casas permanentemente de modo que podemos revê-las mais tarde. Para isso, vamos primeiro dar uma olhada algum código clichê que eu tenho começou com já. Observe primeiro que entre os cabeçalhos lá em cima é agora lib.h padrão que acontece de ter algumas funções relacionadas para o arquivo I / O, arquivo de entrada e saída. Repare que eu também já declarou uma constante chamada ESTUDANTES - em todos os tampões - cujo valor é codificado como três. Observe agora que dentro do meu principal programa, estou declarando uma matriz de tamanho três usando essa constante chamada Alunos cada de cujos membros é de digite alunos. Lembre-se agora que um estudante vamos definir como possuindo um nome e uma casa ambos que são cadeias de caracteres como por este declaração instrui, ponto h. Agora, de volta em structs1.c, perceber que eu ter um loop for aqui que vai iteração de zero até três. Vai me levar para um estudante de nome ea casa de um estudante novo e de novo e de novo. Em seguida, na parte inferior deste programa, perceber que eu tenho um outro loop que vai libertar o aluno om nome ea casa do estudante om em um construídas de forma semelhante circuito. Para ter certeza, podemos combinar esses laços em apenas um, mas eu queria tem alguns segmentos distintos de código por uma questão de discussão aqui. Agora, entre os loops, vamos realmente tem outra, e esta aqui é propósito na vida é realmente salvar todos desses nomes e as casas que estão atualmente na RAM para o disco na forma de valores separados por vírgulas. Para isso, vamos usar três novas funções - F aberto, F printf, e F próximo, que abrir um arquivo, imprimir em um arquivo, e fechar um arquivo. Podemos usá-los como se segue. FILE, em todas as tampas, o que é um pouco de uma curiosidade em C, arquivo é fopen unquote citação e agora um nome para o arquivo, digamos, students.CSV, mas eu podia chamá-lo de mais nada, vírgula e agora estou indo para especificar um único w dentro de aspas duplas. W, como você já deve ter adivinhado, significa que fopen deve abrir este arquivo Students.CSV chamado para escrever assim que podemos realmente poupar algum conteúdo para ele. Vamos próximo cheque se o arquivo não é igual a nulo. Porque se for, alguma coisa tem, provavelmente, errado, caso em que nós não deve prosseguir para tentar para imprimir qualquer coisa a ele. Mas se não é nulo, em seguida, dentro do chaves que eu vou fazer uma iteração de i é igual a 0 em até ESTUDANTES, e eu vou incrementar i em cada iteração. E dentro deste loop, eu vou fprintf, de modo a imprimir em um arquivo - especificamente a um Eu já aberto - uma string que parece com este% s,% s barra invertida n quote perto. E agora eu quero ligar para cada um dos esses espaços reservados os valores reais do nome de um aluno e uma casa usando o operador ponto. Alunos suporte i.name, estudantes paren suporte i.house perto -e-vírgula. Agora abaixo deste loop for, eu estou simplesmente vai chamar fclose de arquivo em ordem para, finalmente, fechar o arquivo. Agora, quando eu executar este programa, eu não deveria realmente ver nada no tela, mas eu deveria ter depois de correr este programa um arquivo chamado Students.CSV no mesmo diretório que Eu executar o comando em que deveria conter uma vírgula separados lista de valores. Vamos dar uma olhada. Fazer estruturas 1. / Aluno structs1 nomear, digamos David, ele vai viver em Mather. Nome do aluno, vamos dizer, Lauren, ela vai viver em Leverett. Nome do aluno, digamos, Rob, ele vai viver em Kirkland. Agora, de novo, como esperado, não aparece nada ter acontecido, mas deixe-me vá em frente no prompt de comando e digite g edição students.CSV na esperança de que esse arquivo realmente existe. Gedit students.CSV ENTER e, de fato, perceber que um arquivo contendo puramente texto, mas o texto separados por vírgulas para cada campo, de fato existe. E se estivéssemos usando, e não o CS50 aparelho, mas um Mac mais familiar ou PC, verifica-se que poderíamos de fato abrir este arquivo CSV com um mais programa conhecido como o Excel ou Numbers.