如何格式化和合并字符串
How to format and merge strings
我正在尝试格式化和合并字符串(使用 sprintf),然后使用 printf 打印它们。但它不起作用,我不知道为什么。
错误是字符串未初始化。
int main() {
char wochentag[] = "Freitag";
int tag = 13;
char monat[] = "Mai";
int jahr = 1927;
char *string;
char *array=(char *) malloc(26*sizeof(char));
sprintf (string,"%s" "%d" "%s" "%d",wochentag,tag,monat,jahr);
printf("%s\n", string);
free(array);
return 0;
}
以下修复可实现您的目标:
char *array=(char *) malloc(26*sizeof(char));
指向 char 的指针是 char*
,而不是 *char
。
char *array=(char *) malloc(26*sizeof(char));
sprintf (array,"%s %d %s",wochentag,tag,monat);
printf("%s\n", array);
既然你为你的 array
变量分配了内存,这就是你应该在 sprintf
和 printf
中使用的,对吧?另请注意 sprintf
的正确用法是带引号。
这是固定码:
int main() {
char wochentag[] = "Freitag";
int tag = 13;
char monat[] = "Mai";
int jahr = 1927;
char *string;
char *array=(char *) malloc(26*sizeof(char));
sprintf (array,"%s %d %s",wochentag,tag,monat);
printf("%s\n", array);
free(array);
return 0;
}
以下代码可以干净地编译,消除代码混乱,执行错误检查,包括所需的头文件,适当缩进以提高可读性并且可以正常工作。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char wochentag[] = "Freitag";
int tag = 13;
char monat[] = "Mai";
int jahr = 1927;
char *string=malloc(26);
if( NULL == string)
{ // then malloc failed
perror( "malloc for 26 bytes failed");
exit( EXIT_FAILURE);
}
// implied else, malloc successful
sprintf (string,"%s%d%s%d",wochentag,tag,monat,jahr);
printf("%s\n", string);
free(string);
return 0;
}
我正在尝试格式化和合并字符串(使用 sprintf),然后使用 printf 打印它们。但它不起作用,我不知道为什么。 错误是字符串未初始化。
int main() {
char wochentag[] = "Freitag";
int tag = 13;
char monat[] = "Mai";
int jahr = 1927;
char *string;
char *array=(char *) malloc(26*sizeof(char));
sprintf (string,"%s" "%d" "%s" "%d",wochentag,tag,monat,jahr);
printf("%s\n", string);
free(array);
return 0;
}
以下修复可实现您的目标:
char *array=(char *) malloc(26*sizeof(char));
指向 char 的指针是 char*
,而不是 *char
。
char *array=(char *) malloc(26*sizeof(char));
sprintf (array,"%s %d %s",wochentag,tag,monat);
printf("%s\n", array);
既然你为你的 array
变量分配了内存,这就是你应该在 sprintf
和 printf
中使用的,对吧?另请注意 sprintf
的正确用法是带引号。
这是固定码:
int main() {
char wochentag[] = "Freitag";
int tag = 13;
char monat[] = "Mai";
int jahr = 1927;
char *string;
char *array=(char *) malloc(26*sizeof(char));
sprintf (array,"%s %d %s",wochentag,tag,monat);
printf("%s\n", array);
free(array);
return 0;
}
以下代码可以干净地编译,消除代码混乱,执行错误检查,包括所需的头文件,适当缩进以提高可读性并且可以正常工作。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char wochentag[] = "Freitag";
int tag = 13;
char monat[] = "Mai";
int jahr = 1927;
char *string=malloc(26);
if( NULL == string)
{ // then malloc failed
perror( "malloc for 26 bytes failed");
exit( EXIT_FAILURE);
}
// implied else, malloc successful
sprintf (string,"%s%d%s%d",wochentag,tag,monat,jahr);
printf("%s\n", string);
free(string);
return 0;
}