簡體   English   中英

sprintf與%*。s格式說明符一起使用時寫入空白字符串

[英]sprintf writing a blank string when used with %*.s format specifier

我有一個sprintf如下-

sprintf (output,"%.*s%s%s%s",length,Str1,Str2,Str3,Str4);

所有字符串都包含有效數據,並且length參數也正確。 但是,在此sprintf之后,輸出仍然為空。

如果我將%。* s替換為%s並刪除length參數,則效果很好。

嘗試這個

更改

sprintf (output,"%*.s%s%s%s",length,Str1,Str2,Str3,Str4);

sprintf (output,"%.*s%s%s%s",length,Str1,Str2,Str3,Str4);
                  ^^

之所以沒有輸出任何內容,是因為如果您在點后省略了尾隨數字或星號,則精度將被視為零。 %*. 修改寬度而不是精度 相反,您需要%.* 請注意,這僅適用於它所屬的轉換說明符。 即:

char output[100];
char str1[] = "hello";
char str2[] = "there";
int length = 4;

sprintf(output, "%.*s%s", length, str1, str2);
printf("%s", output);

輸出:

hellthere

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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