C printf formato códigos binário opções


Printf e scanf número de códigos com até seis dígitos de precisão, notação científica Nota de rodapé: Em printf (), as promoções de tipo de expressão são esperadas - em uma expressão, char e short são convertidos em int e float é convertido em duplo. Assim c corresponde realmente a um parâmetro de tipo int e f e g correspondem realmente a parâmetros do tipo double. Assim, em printf () não há diferença entre f e lf, ou entre g e lg. No entanto, em scanf () o que é passado é um ponteiro para a variável para que nenhum tipo de promoções ocorram ou são esperados. Assim f e lf são bastante diferentes em scanf, mas o mesmo em printf. Pessoalmente, eu costumava usar lg rotineiramente para duplos em printf e scanf, mas isso é fora de favor nos dias de hoje e, de fato, gcc lhe dará uma mensagem de aviso para usar lg em printf. O procedimento usual nestes dias é usar g para o dobro em printf e lg para duplo em scanf. Não importa o que você usa para printf porque a função de biblioteca printf trata-los como sinônimos, mas é crucial para obtê-lo direito para scanf. Printf modificadores de formato Modificadores aparecem entre a e a letra-chave. Um número é uma largura de campo. E um número é uma precisão Exemplo: printf (6.3f, 2.8) rende 2.800 (com um espaço antes do 2) Note que esse 6 inclui as 3 casas decimais eo 1. - 6 caracteres no total. Assim, 6-3-1 2 caracteres à esquerda do ponto decimal. 0 (o dígito zero) significa almofada com zeros para a largura do campo (usualmente usado apenas com inteiros) l (a letra) significa longo, e. Ld para formatar um int longo em decimal Exemplo de 0: 2. 3 (um espaço entre. E 3) Em 02d, o 0 não faz parte da largura do campo. É um caractere de modificador. E quando você tem uma largura de campo, você deve escrevê-lo de tal forma que ele não começa com um zero (e, em seguida, você pode antecipar um zero como um caractere de modificador se você quiser que).Retorna uma seqüência de caracteres formatada pelas convenções printf habituais do Função de biblioteca C sprintf. Veja abaixo para mais detalhes e veja sprintf (3) ou printf (3) em seu sistema para uma explicação dos princípios gerais. O Perl faz sua própria formatação sprintf: ele emula a função sprintf (3). Mas não usá-lo, exceto para números de ponto flutuante, e mesmo assim apenas modificadores padrão são permitidos. Extensões não-padrão em seu local sprintf (3), portanto, não estão disponíveis a partir do Perl. Ao contrário de printf. Sprintf não faz o que você provavelmente quer dizer quando você passa uma matriz como seu primeiro argumento. A matriz é dada contexto escalar e, em vez de usar o 0 º elemento da matriz como o formato, Perl usará a contagem de elementos na matriz como o formato, que é quase nunca útil. Perls sprintf permite as seguintes conversões universalmente conhecidas: Além disso, Perl permite as seguintes conversões amplamente suportadas: Finalmente, para a compatibilidade para trás (e nós queremos dizer para trás), o Perl permite essas conversões desnecessárias mas amplamente suportadas: Note que o número de conversões Expoente na notação científica produzida por e. E. g e G para números com o módulo do expoente inferior a 100 é dependente do sistema: pode ser três ou menos (zero-padded conforme necessário). Em outras palavras, 1,23 vezes dez para o 99 pode ser 1,23e99 ou 1,23e099. Da mesma forma para a e A. o expoente ou os dígitos hexadecimais podem flutuar: especialmente a opção de configuração Perl de dupla longa pode causar surpresas. Entre o e a letra do formato, você pode especificar vários atributos adicionais que controlam a interpretação do formato. Em ordem, estes são: Um índice de parâmetro de formato explícito, como 2. Por padrão sprintf irá formatar o próximo argumento não utilizado na lista, mas isso permite que você tome os argumentos fora de ordem: Quando um espaço e um sinal de mais são dadas Como as bandeiras ao mesmo tempo, o espaço é ignorado. Quando a sinalização e uma precisão são dadas na conversão o, a precisão é incrementada se for necessário para o líder 0. Este sinalizador diz Perl para interpretar a seqüência fornecida como um vetor de inteiros, um para cada caractere na seqüência de caracteres. O Perl aplica o formato a cada inteiro, por sua vez, e junta as seqüências resultantes com um separador (um ponto, por padrão). Isso pode ser útil para exibir valores ordinais de caracteres em cadeias arbitrárias: Coloque um asterisco antes do v para substituir a seqüência de caracteres a ser usada para separar os números: Você também pode especificar explicitamente o número do argumento a ser usado para a seqüência de junção usando algo como 2v para Exemplo: Argumentos geralmente são formatados para ser tão ampla quanto necessário para exibir o valor fornecido. Você pode substituir a largura colocando um número aqui, ou obter a largura do próximo argumento (com) ou de um argumento especificado (por exemplo, com 2): Se uma largura de campo obtida através de é negativo, tem o mesmo efeito que o - Flag: left-justificação. Você pode especificar uma precisão (para conversões numéricas) ou uma largura máxima (para conversões de seqüência de caracteres) especificando a. Seguido por um número. Para formatos de ponto flutuante, exceto g e G. Isso especifica quantos lugares à direita do ponto decimal para mostrar (o padrão é 6). Por exemplo: Para g e G, isso especifica o número máximo de dígitos a serem exibidos, incluindo os anteriores ao ponto decimal e aqueles depois dele por exemplo: Para conversões de números inteiros, especificar uma precisão implica que a saída do próprio número deve ser zero - padded a essa largura, onde o sinalizador 0 é ignorado: Para conversões de seqüência de caracteres, especificando uma precisão trunca a seqüência de caracteres para ajustar a largura especificada: Você também pode obter a precisão do próximo argumento usando .. ou a partir de um argumento especificado .2): Se uma precisão obtida através de é negativo, ele conta como sem nenhuma precisão. Para conversões numéricas, você pode especificar o tamanho para interpretar o número como usando l. H. V. q. L. ou ll. Para conversões de número inteiro (duox X bi DUO), os números normalmente são assumidos como sendo o tamanho inteiro padrão na sua plataforma (geralmente 32 ou 64 bits), mas você pode substituí-lo para usar um dos tipos padrão C, como suportado Pelo compilador usado para criar o Perl: A partir de 5.14, nenhum destes levanta uma exceção se eles não são suportados em sua plataforma. No entanto, se os avisos estiverem ativados, um aviso da classe de aviso printf é emitido em um sinalizador de conversão não suportado. Se você preferir uma exceção, faça o seguinte: Se você gostaria de saber sobre uma dependência de versão antes de começar a executar o programa, coloque algo como isto no topo: Você pode descobrir se o seu Perl suporta quads via Config: (Efg EFG), os números geralmente são assumidos como sendo o tamanho de ponto flutuante padrão na sua plataforma (duplo duplo ou longo), mas você pode forçar o duplo longo com q. L. ou ll se sua plataforma os suportar. Você pode descobrir se o seu Perl suporta duplicações longas via Config: Você pode descobrir se Perl considera longo duplo para ser o tamanho de ponto flutuante padrão para usar em sua plataforma via Config: Também pode ser que duplos e duplos são os mesmos Coisa: O especificador de tamanho V não tem efeito para código Perl, mas é compatível com compatibilidade com código XS. Significa usar o tamanho padrão para um inteiro Perl ou número de ponto flutuante, que é o padrão. Normalmente, sprintf toma o próximo argumento não utilizado como o valor para formatar para cada especificação de formato. Se a especificação de formato usa para exigir argumentos adicionais, eles são consumidos da lista de argumentos na ordem em que aparecem na especificação de formato antes do valor para formatar. Quando um argumento é especificado por um índice explícito, isso não afeta a ordem normal dos argumentos, mesmo quando o índice explicitamente especificado teria sido o próximo argumento. Usa a para a largura, b para a precisão e c como o valor para formatar enquanto: usaria um para a largura e precisão e b como o valor para formatar. Aqui estão alguns exemplos mais cientes de que ao usar um índice explícito, pode precisar escapar: Se usar locale (incluindo o uso de locale 39: notcharacters39) estiver em vigor e POSIX :: setlocale tiver sido chamado, o caractere usado para o separador decimal em O número de ponto flutuante formatado é afetado pela localidade LCNUMERIC. Veja perllocale e POSIX. Imprima dados formatados para stdout Escreve a seqüência C apontada por format para a saída padrão (stdout). Se o formato incluir especificadores de formato (subseqüências começando com), os argumentos adicionais seguintes formato são formatados e inseridos na seqüência resultante substituindo seus respectivos especificadores. Parâmetros format C string que contém o texto a ser gravado em stdout. Ele pode opcionalmente conter especificadores de formato incorporado que são substituídos pelos valores especificados em argumentos adicionais subseqüentes e formatados conforme solicitado. Onde o caracter especificador no final é o componente mais significativo, uma vez que define o tipo ea interpretação do seu argumento correspondente: Número decimal assinado Número inteiro decimal não assinado Inteiro hexadecimal não assinado Inteiro hexadecimal não assinado (maiúscula) Decimal ponto flutuante, minúsculas Decimal ponto flutuante, Maiúscula Notação científica (mantissaexponent), minúscula Notação científica (mantissaexponent), maiúscula Use a representação mais curta: e ou f Use a representação mais curta: E ou F Ponto flutuante hexadecimal, minúscula Ponto flutuante hexadecimal, maiúscula O argumento correspondente deve ser um ponteiro para um int assinado. O número de caracteres escritos até agora é armazenado no local apontado. A seguido por outro personagem irá escrever um único para o fluxo. O especificador de formato também pode conter sub-especificadores: flags. largura ..precisão e modificadores (nessa ordem), que são opcionais e seguem estas especificações: Justificação à esquerda dentro da largura do campo dado A justificação à direita é o padrão (ver sub-especificador de largura). Forças para preceder o resultado com um sinal de mais ou menos (ou -) mesmo para números positivos. Por padrão, apenas os números negativos são precedidos de um - sinal. Se nenhum sinal vai ser escrito, um espaço em branco é inserido antes do valor. Usado com o. X ou X o valor é precedido com 0. 0x ou 0X respectivamente para valores diferentes de zero. Usado com a. UMA . E. E. F. F. G ou G força a saída escrita a conter um ponto decimal mesmo se não mais dígitos seguir. Por padrão, se nenhum dígito seguir, nenhum ponto decimal é gravado. Esquerda-pads o número com zeros (0) em vez de espaços quando preenchimento é especificado (ver sub-especificador de largura). Para especificadores de inteiros (d = 1, ... x, X): precision especifica o número mínimo de dígitos a serem gravados. Se o valor a ser escrito for menor que este número, o resultado será preenchido com zeros à esquerda. O valor não é truncado mesmo se o resultado for mais longo. Uma precisão de 0 significa que nenhum caractere é escrito para o valor 0. Para um . UMA . E. E. F e F: este é o número de dígitos a serem impressos após o ponto decimal (por padrão, este é 6). Para especificadores g e G: Este é o número máximo de dígitos significativos a serem impressos. Para s . Este é o número máximo de caracteres a serem impressos. Por padrão, todos os caracteres são impressos até que o caractere nulo final seja encontrado. Se o período é especificado sem um valor explícito para precisão. 0 é assumido. A precisão não é especificada na seqüência de caracteres de formato, mas como um argumento de valor inteiro adicional que precede o argumento que deve ser formatado. O comprimento sub-especificador modifica o comprimento do tipo de dados. Este é um gráfico mostrando os tipos usados ​​para interpretar os argumentos correspondentes com e sem especificador de comprimento (se um tipo diferente é usado, a promoção de tipo apropriado ou conversão é realizada, se permitido): Nota sobre o especificador c: leva um int ( Ou wintt) como argumento, mas executa a conversão adequada para um valor char (ou um wchart) antes de formatá-lo para saída. Nota: As linhas amarelas indicam especificadores e sub-especificadores introduzidos por C99. Consulte ltcinttypesgt para os especificadores para tipos estendidos. . (Argumentos adicionais) Dependendo da seqüência de caracteres de formato, a função pode esperar uma seqüência de argumentos adicionais, cada um contendo um valor a ser usado para substituir um especificador de formato na seqüência de formato (ou um ponteiro para um local de armazenamento, para n). Deve haver pelo menos tantos desses argumentos quanto o número de valores especificados nos especificadores de formato. Argumentos adicionais são ignorados pela função. Valor de retorno Em caso de sucesso, o número total de caracteres escritos é retornado. Se ocorrer um erro de escrita, o indicador de erro (ferror) é definido e um número negativo é retornado. Se ocorrer um erro de codificação de caracteres multibyte ao escrever caracteres largos, errno é definido como EILSEQ e um número negativo é retornado. Compatibilidade Implementações de biblioteca particulares podem suportar especificadores e sub-especificadores adicionais. Esses listados aqui são suportados pelos mais recentes padrões C e C (ambos publicados em 2011), mas aqueles em amarelo foram introduzidos em C99 (apenas necessário para implementações C desde C11) e podem não ser suportados por bibliotecas que estão de acordo com padrões mais antigos. Escreve string para stdout (função) scanf Ler dados formatados a partir de stdin (função) fprintf Escrever dados formatados para fluxo (função) fwrite Escrever bloco de dados para funções de fluxo (função): macro constantes:

Comments

Popular Posts