【C言語】"%1ld" って何?
Q&A
Closed
以下のサイトの、strchr関数の使用例で示されたプログラムにおける、char*型とchar型 (文字列) の減算「p-s」の部分について質問です。
上のサイトでは「p-s」の出力フォーマット指定子を "%d"
として出力していたのに対し、次のプログラムで「p-s」と同じタイプ「p-str」の指定子を "%d"
や "%1d"
にするとコンパイルエラーになり、"%1ld"
でようやく動かせました。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char str[] = "abc@fghijk";
char* p = strchr(str, '@');
if(p != NULL){
printf("「@」の位置:str[%1ld]\n", p-str);
}
}
"%1ld"
という指定子自体は、webで検索してもなかなか見つかりません。エラーメッセージで指摘されて初めて知ったので、特徴や使う場面も分からずにいます。どなたか、"%1ld"
の意味や仕組みを教えて頂けないでしょうか?
※一応、一見似ている指定子 "%ld"
の説明には目を通していて、その役割「倍精度整数(?)を10進数で出力」の意味が分からなくてギブしました。
0