【发布时间】:2021-07-25 20:08:32
【问题描述】:
我正在为大学时的一项任务编写代码,我已经编写了大部分代码,但我刚刚意识到我的核心功能中的某些东西并没有像我希望的那样工作。我尝试多次对其进行故障排除,但我不明白为什么我的 char 变量在运行结束时被删除,而 int 变量仍然存在。
void Analyze()
{
char buffer[81];
char* ptr;
char* ptr2;
ptr = 0;
fgets(buffer, sizeof buffer, stdin);
printf("%s\n", buffer);
char* command = strtok_s(buffer, " \t", &ptr);
printf_s("the command you selcted is %s\n", command);
char* Matname = strtok_s(NULL, " \t", &ptr);
printf_s("the name you selcted is %s\n", Matname);
char* row1 = strtok_s(NULL, " \t", &ptr);
printf_s("the rowsize you selcted is %s\n", row1);
char* col1 = strtok_s(NULL, " \t", &ptr);
printf_s("the colsize you selcted is %s\n", col1);
row = strtol(row1, &ptr2, 10);
col = strtol(col1, &ptr2, 10);
// *command = command;
// *Matname = Matname;
printf_s("row number is %d, col number is %d", row, col);
return ;
}
我需要得到command 名称和Matname,所以在那之后我不知道如何将它分配给矩阵。现在,由于某种原因,我只得到了 row 和 col,我可以用它构建一个矩阵。
就像我说的,这是我项目中的主要功能,最后所有的文本都不是用于调试的,我似乎不知道为什么command和Matname被删除了。
【问题讨论】:
-
你熟悉函数参数的概念吗?
-
范围变量和函数参数在任何初级C编程书籍中都有介绍。 SO 不能替代传统研究。
-
永远不要使用全局变量,你应该为自己省去很多痛苦。
-
我之前评论的重点是您通过编辑和修复问题来澄清问题,而不是添加评论。所有关于变量是否被删除的东西都是无稽之谈,在任何情况下都与您的问题无关。发布一个您需要帮助理解的新问题。
-
@lulle - 完全正确,尽管您应该避免在 cmets 中回答问题。如果您有答案,请发布答案。
标签: arrays c function matrix char