我尝试重新发明strcpy C函数,但是当我尝试运行它时,我收到此错误:
Unhandled exception at 0x00411506 in brainf%ck.exe: 0xC0000005: Access violation writing location 0x00415760.
Run Code Online (Sandbox Code Playgroud)
该*dest = *src;行发生错误.这是代码:
char* strcpy(char* dest, const char* src) {
char* dest2 = dest;
while (*src) {
*dest = *src;
src++;
dest++;
}
*dest = '\0';
return dest2;
}
Run Code Online (Sandbox Code Playgroud)
编辑:哇,那很快.这是调用代码(strcpy在mystring.c中定义):
#include "mystring.h"
#include <stdio.h>
int main() {
char* s = "hello";
char* t = "abc";
printf("%s", strcpy(s, t));
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 它们不像SQL注入那样容易受到攻击mysql_query("SELECT important_data FROM users WHERE password = $password")吗?
我正在制作一个需要使用两个堆栈的C程序.一个人需要持有角色,另一个需要持有双打.我有两个结构,节点和堆栈:
struct node {
double value;
struct node *next;
struct node *prev;
};
struct stack {
struct node *last;
struct node *curr;
};
Run Code Online (Sandbox Code Playgroud)
问题是我需要每种类型中的一种.我唯一能想到的是有两个独立的结构(即char_node,double_node,char_stack,double_stack).如果这是C++我会使用模板,但当然我不能在C.
我记得可以用于此的一件事是一个无效指针.那会有用吗,它会实用吗?
我正在使用GUI制作一个简单的Guess-The-Number游戏.我需要等待一个循环,等待用户在文本框中输入一个数字,然后按"确定".如何在循环中等待事件?
注意:我不想要消息框.这是在主窗口中完成的,因此需要等待输入.
编辑:我应该更好地解释自己.我知道GUI中有一个循环.我想要的是方法中的另一个循环.也许有更好的方法来做到这一点.我可以在按钮的事件处理程序中编写代码,现在我考虑一下.虽然我需要全局变量.不管怎样,我会考虑一下,但我希望我的问题现在更清楚了.
编辑2:对不起,我的问题不明确,编辑没有多大帮助.首先,代码太大,无法在此处发布.我可能不得不发布GUI的截图,所以它没什么用处.基本上,我有两个字段,"最大数量"和"允许的猜测数量".用户输入这两个并单击"播放".一个新面板可用,带有一个文本框和一个"猜猜"按钮.用户输入猜测,程序检查是否正确.
第二个无限循环的目的是避免全局变量.看,每当用户点击"播放"时,游戏必须生成一个新的随机数作为正确的猜测.如果一切都在一个方法内完成,没问题.但是如果多次调用"Guess"按钮的事件处理程序,则必须将该数字存储为Form的实例变量.当然,这不是什么大不了的事,但我认为这个数字应该是指导当前游戏的方法的属性,而不是表格的属性.
我还必须跟踪方法之外的剩余猜测数.再说一次,这没什么大不了的.如果可以的话,我只想避免使用全局变量.
我再次抱歉,我的问题不太清楚.我有点累了,我觉得写得太多了.如果仍然不清楚,那就不要打扰了.我会想到一些事情.
我有一些需要在for循环中分配的变量.显然,当循环退出时,C#忽略那里发生的任何事情,并且变量返回到其原始状态.具体来说,我需要它们作为List的最后一个和倒数第二个元素.这是代码:
int temp1, temp2;
for (int i = 0; i < toReturn.Count; i++) {
if (i == toReturn.Count - 2) { // Next-to-last element
temp1 = toReturn[i];
} else if (i == toReturn.Count - 1) { // Last element
temp2 = toReturn[i];
}
}
// At this point, temp1 and temp2 are treated as uninitialized
Run Code Online (Sandbox Code Playgroud)
注意:没关系坏变量名称,它们实际上是临时变量.任何更复杂的东西都会让事情变得混乱.
现在,有两种方法(我知道)可以解决这个问题:一种是在循环退出后弄清楚如何使变量生效,另一种是在Python中做一些事情,你可以做到temp = my_list[-1]最后一个元素列表 这些可能在C#中有可能吗?
编辑:当我尝试编译时,我得到"使用未分配的局部变量'temp1'"错误.这段代码甚至没有运行,它只是坐在一个永远不会被调用的方法中.如果这有帮助,我试图在另一个循环中使用变量.