有dl可以看一下吗?

P5740 【深基7.例9】最厉害的学生

```cpp #include <stdio.h> #include <string.h> struct test { char name[9]; int chin; int math; int eng; }; char na[9]; int n, max=-1, ch, ma, en; int main() { scanf("%d", &n); for (int k = 0; k < n; k++) { struct test store; int sum; scanf("%s", store.name); scanf("%d%d%d", &store.chin, &store.math, &store.eng); sum = store.chin + store.math + store.eng; if (sum > max) { max = sum; strcpy(na, store.name); ch = store.chin; ma = store.math; en = store.eng; } } printf("%s ", na); printf("%d %d %d", ch, ma, en); return 0; } ``` 推测是因为$na$末尾会有残余数据导致$WA$
by Mr_Gengar @ 2022-09-17 18:00:52


@[Langrange2021](/user/593001)
by Mr_Gengar @ 2022-09-17 18:01:12


@[Infi_nut](/user/661135) 我过了,谢谢dl。我可以请教一下吗? 为什么我的那种用循环输出的方法不对,用strcpy函数就对了呢?
by Langrange2021 @ 2022-09-17 18:14:22


@[Langrange2021](/user/593001) ```c if (store.name[q] == '\0') { break; } ``` 复制字符串时没把 0 一同复制过去,输出时就越界了。
by ud2_ @ 2022-09-17 18:22:23


@[ud2_](/user/206953) 正解
by Mr_Gengar @ 2022-09-17 18:39:39


|