我们今天在课堂上做了这个练习,但不幸的是,我的代码运行不正常。它不会打印string1
。我的老师也无法弄清楚为什么会这样。
#include <stdio.h>
#include <stdlib.h>
void main()
{
char string1[20];
char string2[] = "It is almost end of semester!";
size_t idx;
int size;
printf("Enter string1:\n");
scanf_s("%s", string1);
size = sizeof(string2) / sizeof(char);
printf("\nString 1 is : %s\n\n", string1);
for (idx = 0; idx < size; idx++)
{
printf("%c ", string2[idx]);
}
puts("");
system("pause");;
}
答案 0 :(得分:1)
scanf_s
需要额外的参数。
scanf_s("%s", string1, _countof(string1));
答案 1 :(得分:0)
您使用scanf_s
代替scanf
,正如林奇先生正确指出的那样需要额外的参数。您可以使用scanf
本身完成相同的操作。一种方法如下:
#include <stdio.h>
#include <stdlib.h>
int main () {
char string1[20];
char string2[] = "It is almost end of semester!";
size_t idx;
int size;
printf ("Enter string1:\n");
scanf ("%[^\n]%*c", string1);
string[19] = 0; /* force null-termination of string1 */
size = sizeof (string2) / sizeof (char);
printf ("\nString 1 is : %s\n\n", string1);
for (idx = 0; idx < size; idx++) {
printf ("%c ", string2[idx]);
}
puts ("");
return 0;
}
<强>输出:强>
$ ./bin/strprn
Enter string1:
scanf_s is not scanf
String 1 is : scanf_s is not scanf
I t i s a l m o s t e n d o f s e m e s t e r !
注意: main()
类型为int
而不是void
,无论您使用什么ms都可以逃脱。它也返回一个值。