[英]sprintf conversion lacks type at end of format
我在C程序中使用sprintf,並且試圖格式化字符串。
這是我的代碼:
sprintf(string, "| %-5%lu | %-9%s | %-9%s | %c | %-4%f |", currentPtr->s.SID, currentPtr->s.lname, currentPtr->s.fname, currentPtr->s.initial, currentPtr->s.GPA);
而且我不斷收到警告:
warning: conversion lacks type at end of format [-Wformat]
為什么會收到此警告?
編輯:對不起,我應該添加我的結構,以便你們知道我的變量是什么類型。
結構:
typedef struct student {
char lname[ 10 ], initial, fname[ 10 ];
unsigned long SID;
float GPA;
} SREC;
typedef struct node {
SREC s;
struct node *nextPtr;
} Node;
typedef Node *NodePtr;
currentPtr是一個NodePtr
Edit2:解決了大家! :)
"| %-5%lu | %-9%s | %-9%s | %c | %-4%f |"
^ ^ ^ ^
字段寬度和類型說明符之間有額外的%
。 例如, %-9%s
不是有效的格式說明符。 它應該是%-9s
(即中間沒有多余的%
)。
printf
格式的語法如下(來自Wikipedia ):
%[parameter][flags][width][.precision][length]type
因此,除了%
和type
以外的所有內容都是可選的,中間沒有%
。
PS:請注意,該parameter
是POSIX擴展名,不是C標准。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.