gpt4 book ai didi

C编程: gets() and Char String Array Issue - strcpy() copying into other strings in the Array

转载 作者:行者123 更新时间:2023-11-30 14:22:33 24 4
gpt4 key购买 nike

我正在使用函数 gets() 来检索用户输入的字符串。然后,我将该字符串存储到字符数组 char transdestmp[DESMAX] 中,其中 DESMAX 为 31。如果variable_name 大于 30 个字符,则要求用户租用另一个字符串。否则,使用 strcpy() 将字符串复制到二维数组 char - acctdes[31][20] 中。

accttitle 接收 transdestmp[DESMAX]

void accttitle(char descr[DESMAX])
{
printf("\nEnter title for new account %d: ", transinpt);
gets(descr);
while(strlen(descr)>DESMAX){
printf(" **Title entered is longer than 30 characters\n");
printf(" Please reenter : ");
gets(descr);
}
strcpy(acctdes[transcntr],descr);
printf("---->vacctdes[transcntr]: %s\n", acctdes[transcntr]);
printf("---->vacctdes[transcntr-1]: %s\n", acctdes[transcntr-1]);
}

由于某种原因,当我输入一个长字符串,然后输入另一个字符串时,第二个字符串 acctdes[1] 会覆盖存储在 acctdes[0] 中的另一个字符串。

例如,

第一个输入:acctdes[0] = "这是一个长字符串"

它有效...

第二个输入acctdes[1] = "猴子"

它有效...

但是,似乎当我输出 acctdes[0] 时,acctdes[0] 具有 acctdes[1] 中的一些值...就像输出 - 这是一个长和尚...

如果您想了解更多信息,请告诉我。提前致谢。

最佳答案

你的数组声明应该是相反的。

目前您有:acctdes[31][20],这意味着31个占位符,每个占位符为20个字符长度;而您需要 20 个占位符,每个占位符长度为 31 个字符。

应更改为acctdes[20][31]

关于C编程: gets() and Char String Array Issue - strcpy() copying into other strings in the Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13671799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com