73518
C言語において、`printf` と `puts` という2つの標準出力のための関数がありますが、この2つはどのように違うのでしょうか？

```

    #include<stdio.h>
    
    int main(void){
      printf("hello world");
      puts("hello world");
    }
    
```
CC BY-SA 4.0
2021-01-22T15:59:27.280
73504
2021-01-23T05:39:55.553
43413
question
c
printf と puts の違いはなんですか？
puts()は、引数を持つことができません。  
また、出力末尾に改行を含みます。

printf()は、引数を持たせることができます。  
ex.) printf("%d", a);  
出力末尾に改行は含みません。
CC BY-SA 4.0
2021-01-22T21:30:28.147
73506
2021-01-22T21:30:28.147
43624
73504
answer
「文字列を出力する」という役割は同じですが、`printf` ではどのように出力するのかフォーマットを細かく指定できるのが特徴です。

printf では `%` 記号から始まる "変換指定子" と出力したい "変数" のペアを指定するのが一般的な使い方で、数値の桁数や文字列の出力幅、右寄せ
or 左寄せなどを指定できます。

<https://www.k-cube.co.jp/wakaba/server/func/fprintf.html>

```

    #include <stdio.h>
    
    void main(){
        int i;
        printf("%d\n", 200);   /* 200  */
        printf("%i\n", 200);   /* 200  */
        printf("% d\n", 200);  /*  200 */
        printf("% d\n", -200); /* -200 */
        printf("%+d\n", 200);  /* +200 */
        printf("%+d\n", -200); /* -200 */
        printf("%o\n", 200);   /* 310  */
        printf("%#o\n", 200);  /* 0310 */
        printf("%x", 200);     /* c8   */
        printf("%#x", 200);    /* 0xc8 */
        printf("%#X\n", 200);  /* 0XC8 */
        printf("%f\n", 123.456);               /* 123.456000        */
        printf("%10.2f\n", 123.456);           /*     123.46        */
        printf("%010.2f\n", 123.456);          /* 0000123.46        */
        printf("%e\n", 123.456);               /* 1.234500e+02      */
        printf("%E\n", 123.456);               /* 1.234500E+02      */
        printf("%10.3e\n", 123.456);           /* 1.235e+02         */
        printf("%g\n", 123.456);               /* 123.456           */
        printf("%g\n", 0.0000123456);          /* 1.23456e-05       */
        printf("[%c]\n", 'h');                 /* [h]               */
        printf("[%*c]\n", 5, 'h');             /* [    h]           */
        printf("This is a %s.\n", "string");   /* This is a string. */
        printf("[%s]\n", "overlength");        /* [overlength]      */
        printf("[%*s]\n", 5, "overlength");    /* [overlength]      */
        printf("[%.*s]\n", 5, "overlength");   /* [overl]           */
        printf("Address: %p\n", main);         /* Address: 00401330 */
        printf("this many of chars are written so far:%n", &i);
        printf("%d\n", i); /* this many of chars are written so far:38 */
    }
    
```
CC BY-SA 4.0
2021-01-23T05:39:55.553
73518
2021-01-23T05:39:55.553
3060
73504
answer