我假设如果文件已经打开则fopen返回NULL指针。但如果文件已经打开,它看起来fopen不会返回NULL"w"模式下。下面是我用来尝试这个的代码,我没有收到任何错误。我尝试过 mingw32 以及 TDM-GCC-64 编译器。如果我没记错的话,如果文件已经打开,C++ 会报错。
#include<stdio.h>
int main()
{
FILE *fp1, *fp2;
fp1 = fopen("file1.txt", "w");
fp2 = fopen("file1.txt", "w");
if(fp2 == NULL)
{
printf("Error in opening file\n");
return(0);
}
// Edit: added following code to check the behavior if write operation
// is performed simultaneously
fputc('A', fp1);
fputc('M', fp1);
fputc('S', fp1);
fputc('B', fp2);
fclose(fp1);
fclose(fp2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:增加了额外的代码来写一些数据都fp1和fp2和看到的行为。如果执行,file1.txt包含数据BMS和似乎是正确的行为,fp1并 …
我正在尝试添加pre-commit脚本。
该脚本有效,但 git 忽略了对文件的更改,似乎 git 忽略了我.git在.gitignore.
例如:
# add a hook that runs hello world
echo "#\!/bin/sh \n echo 'hello world'" > .git/hooks/pre-commit
# make the hook runnable
chmod +x .git/hooks/pre-commit
# check changes
git status
# > Your branch is up to date with 'origin/master'.
# > nothing to commit, working tree clean
Run Code Online (Sandbox Code Playgroud)
因此,我如何将钩子提交到存储库?
我很惊讶我找不到关于分期/提交的性质的更彻底的解释,所以我问自己。我是 GitHub 的新手(并且没有在这台计算机上下载 Bash,所以我宁愿让人们回答)。
具体来说,假设您正在使用 GitBash 在项目目录中工作。您进行一些基本更改并保存。无需暂存或提交任何内容,即可关闭所有应用程序。您所做的更改会发生什么变化?它们会被抹去还是会留下变化?我想同样的问题适用于如果你提交了你的东西然后退出了。
“提交”是否存储在某个文件夹中?“暂存区”只是一个临时的 Bash 东西还是也有一个物理文件夹?
如果退出,是否必须重新提交更改?
谢谢您的帮助。
int main(void)
{
float w = 8.456;
int b = 3;
printf("%d", (int)(b * w));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
似乎无法理解如何做到这一点等于25,即使它int * float并显示为int,什么做int手段,printf行...是不是int由乘以float一个0?
所以我不知道为什么会观察到这种行为:
#include <stdio.h>
int main()
{
unsigned char c;
char d;
scanf("%hhu", &d);
printf("%c\n", d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我没记错的话%hhu是为了unsigned char。如果我输入几乎任何字符,例如a, 或者b答案是什么都没有并d获取值0。但如果我输入97然后d打印该值a(因此 ASCII 会转换为字符)。当数据类型为 时,情况显然并非如此char。我可以直接输入字符并存储它。
也在这段代码中稍加修改
#include <stdio.h>
int main()
{
unsigned char c;
char d;
int g;
scanf("%hhu", &d);
printf("%c\n", d);
scanf("%d", &g);
printf("%d is g\n", g);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我将第一个输入作为字符,例如wora那么它只会跳过第二个输入scanf,但如果输入是数字,那么它会正常工作。
我们知道一个结构体可以声明为:
struct correct {
int year;
int *p;
};
Run Code Online (Sandbox Code Playgroud)
但我们不能将其声明为:
struct wrong {
int year = 2020;
int *p;
};
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
Q1-为什么 C 被设计为不允许为结构的成员设置默认值?允许它这样我们程序员以后不需要初始化它不是更方便吗?
Q2-对于正确的结构类型,year和p是否0都由 GCC初始化?
我真是一言不发。我一直坐在电脑前,试图弄清为什么它不起作用。我试图使播放器无法在空中跳跃。但是由于某种原因,玩家仍然可以跳两次,与此同时,如果玩家尝试第三次或第四次跳跃等。它不会和我的代码工作。但是,为什么我仍然能够跳一跳?我不知道这一点。感谢所有帮助。
#include "pch.h"
#include <iostream>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
using namespace std;
int width = 800;
int height = 600;
int main()
{
sf::RenderWindow window(sf::VideoMode(width, height), "In Development");
window.setFramerateLimit(70);
window.setVerticalSyncEnabled(true);
sf::RectangleShape player;
player.setSize(sf::Vector2f(50, 50));
player.setFillColor(sf::Color::Cyan);
player.setPosition(width / 2, 0);
sf::Vector2f velocity(0, 0);
float gravity = .1;
bool jumping = true;
sf::Event event;
while (window.isOpen())
{
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if (event.type == sf::Event::KeyPressed)
{
if (event.key.code == sf::Keyboard::Space)
{
if (jumping == false)
{
velocity.y = …Run Code Online (Sandbox Code Playgroud)