簡體   English   中英

sprintf轉換在格式末尾缺少類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM