这是我在 C 中的两个函数的代码:```c// Begin
void readTrain(Train_t *train){
printf("Name des Zugs:"); char name[STR]; getlinee(name, STR); strcpy(train->name, name); printf("Name des Drivers:"); char namedriver[STR]; getlinee(namedriver, STR); strcpy(train->driver, namedriver);
}
void getlinee(char *str, long num){
char c; int i = 0; while(((c=getchar())!='\n') && (i<num)){ *str = c; str++; i++; } printf("i is %d\n", i); *str = '\0'; fflush(stdin);
// End```因此,使用 void getlinee(char *str, long num) 函数,我想让用户输入到第一个字符串 char name[STR] 和第二个 char namedriver[STR]。最大字符串大小为 STR(30 个字符),如果我输入的第一个字符串(“Name des Zuges”)超过 30 个字符,它将存储在 name[STR] 中,然后我输入第二个字符串,它将存储在名称驱动程序中,然后打印第一个字符串,我没有从用户输入(输入的前 30 个字符)中获取字符串,而且还“附加”到第二个字符串,我根本不知道为什么……否则如果第一个字符串遵守 30 个字符的限制,则效果很好。这是我的输出,当第一个字符串的输入大于 30 个字符时,问题出在第 5 行“Zugname”中,
楚格名称:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
我是 30
驱动程序名称:xxxxxxxx
我是 8
祖格名称:aaaaaaaaaaaaaaaaaaaaaaaaaaaxxxxxxx