舍友想了一晚上没发现哪错了
エリシーア:
我到现在都记得我一个同学抱着电脑来问我为什么他的代码错这么多,短短七行代码,错误有12个
【回复】我曾经我用C++写了个Hello world,报了190个错
【回复】回复 @超汲小㘶的曰常 :这得是库问题吧[笑哭]
【回复】回复 @Mo-No :化腾和盖茨给的截图工具她偏不用是吧[doge]
潇月qwq:
$include 《studio。h)
init mian();
{
print(hello word;)
retern o;
【回复】不把include打成incdule我不是很认可
【回复】include还能打对,还有救
IceFox99:
你这算啥,你随便找个malloc语句把申请的内存空间变小点,但不要太小,你就等他一晚上在时好时坏的程序里修seg fault到天亮。
【回复】我看了看你冰冷的话语,拳头已经很硬了
【回复】越界真的很难查()
根本不知道是有一个地方写错了导致只有这一个地方越界,还是数组开小了导致所有地方都越界
idfffo:
井include 【stdio。h】
int mian【】
(
print(‘hello world!’)
)
【回复】井incluude 【stdi0。h】
int mian【】
(
print(‘hello world!’)
return o,
)
【回复】回复 @Elle-king :编译器看了想打人(确信)
【回复】给你改下,怎么return 0都没有
鱼头豆腐汤姆猫:
#include <stdio.h>
void HelloWorld()
{
printf("Hello World");
getchar();
}
void Fun()
{
int arr【5】 = {1,2,3,4,5};
arr【6】 = (int)HelloWorld;
}
int main()
{
Fun();
return 0 ;
}
一道经典小题送给刚学C的朋友们[doge]
【回复】回复 @Dark悠月 :兄弟NB[点赞]
操作系统位数问题确实忘记了,以前用XP和vc6跑的,脑子里默认成32位了。[喜极而泣]
这段代码其实是一个很简单但很经典的栈溢出程序。
fun函数里数组越界,数组定义成arr[5],数组就是arr[0-4],那么在栈里,arr[5]的位置存储的就是当前栈底的位置,arr[6]里就是调用的这个这个函数执行完毕后,返回上一层函数的地址。但是我却用arr[6]=int(HelloWord),把HelloWord这个函数的地址当变量把原来的正常的返回地址覆盖。这样,在fun函数执行完毕后就会自动跳到我所操作的HelloWord这个函数里,至于getchar,只是起为了让这个程序停下来,让人能在控制台里看见的作用。这就完成了一次简单基于数组越界的栈溢出攻击。[捂眼]
【回复】得让main能返回才行[doge]
#include <stdio.h>
void hello(void *p)
{
void *a【2】 = {NULL};
a【4】 = p;
puts("Fuck Stack!");
getchar();
}
void* func()
{
void *a【2】 = {NULL};
a【1】 = a【2】;
a【2】 = hello;
return a【1】;
}
int main()
{
func();
return 0;
}
账号已注销:
vs是2022版本的如果出错在scanf后面记得加个_s,血的教训[笑哭]
【回复】在文件头加一行关闭安全检查即可
#define _CRT_SECURE_NO_WARNINGS
【回复】回复 @awslaaaaaaaa :安全不安全是另一件事,vs不按c标准走本身就是问题了,对于初学者来说没有好事。scanf为什么不安全初学者很难理解
【回复】回复 @awslaaaaaaaa :这不是课本的问题是VS的问题 VS不按c标准走不让用scanf怎么还能怪到课本落后
温柔的走进那个良夜:
想起了打acm那些年带过的学弟学妹入门的时候[脸红]
耍酷我是认真的:
mian绝对是因为打字打的太快了😂我就经常这么错
萝卜头Runoob:
只能说我试过,而且编译报错也看不到,当时人傻了