【发布时间】:2017-03-29 19:55:07
【问题描述】:
我希望能够在为名为@987654321@ 的字符串分配值时使用 %d 格式说明符。我尝试这样做,但在运行程序时无法将格式说明符替换为整数...... 这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
const char *answer;
int year;
printf("Enter a year: \n");
scanf("%d", &year);
if ( (year % 400 == 0) || ( (year % 4 == 0) && !(year % 100 == 0) ) ){
answer = "%d does have a bissextus day", year;
}
else {
answer = "%d doesn't have a bissextus day", year;
}
printf("%s\n", answer);
return 0;
}
我还想知道在这种情况下使用const char *answer 是否是一个不错的选择,如果不是,我想知道我应该改用什么。
【问题讨论】:
-
您需要使用
sprintf函数打印到字符串。您不能更改常量字符串。 -
你为什么要那样做?只需将
printf更改为:printf("%d %s have a bissextus day", is_bissextus, year);,其中is_bissextus通过if块设置为"does"或"doesn't"。 -
@markgz:永远不要使用
sprintf;请改用snprintf。 -
谢谢@markgz 但是我能用
sprintf函数做我想做的事吗? -
@AndreKorol 避免潜在的缓冲区溢出。
标签: c string algorithm replace