【发布时间】:2011-06-06 09:07:10
【问题描述】:
我对下面的代码有一个小问题。这是一个简单的程序,它读取 2 个 char 和一个 int 数组。然后它将所有内容存储到另一个字符串中并打印出来。
#include <stdio.h>
#include <string.h>
int main ()
{
char string [50];
char first [11];
char last [16];
int age = 0;
printf("Please type in your first name: ");
scanf("%s", first);
printf("Please type in your last name: ");
scanf("%s", last);
printf("Please type in your age: ");
scanf("%d", &age);
sprintf(string, "Your name is %s %s and you are %d years old.", first, last, age);
puts(string);
getchar();
getchar();
return 0;
}
现在程序运行正常,但是当我关闭它时,我收到以下错误: 运行时检查失败 #2 - 变量“字符串”周围的堆栈已损坏。 这有点令人困惑,我无法弄清楚问题出在哪里。我会很感激 任何建议。
【问题讨论】:
-
不相关,但如果你有 C99(或对它的某些部分有保证),你应该改用
snprintf来防止此类问题的发生。
标签: c