为什么文件含有的字符数多了一?

全网首发!Yolov8_obb旋转框训练、测试、推理手把手教学(DOTA1.0数据集map50已达80%) 其中,images/train和images/val放置原始图片文件,labels/train_original和labels/val_original分别放置原始的标签文件,labels/train和labels/val为空,然后运行步骤(3)的代码,运行结束转换后的标签会保存在labels/train和labels/val中,格式如下。(4)新建yolov8-obb.yaml,修改nc和scales,我使用的是yolov8n.(2)构建数据集,安装下面目录格式,其他test可为空,一定要对应。 阅读详情

为什么文件含有的字符数多了一?

在阅读《The C Programming Language》(2nd Edition)(俗称K&R)时,动手实现了书中的部分示例代码,结果出现了一个问题,在Stackoverflow上进行了问询才得到了解决,由于原题是英文,故翻译成博文与大家分享。

原文链接:Why does the file created using a text editor contain one byte more than expected?

问题描述:

Vim中创建一个文件如下:

a v

bb

e

并且在创建文件的末尾一行时,输入e之后,没有按回车键。

那么分析一下这个文件应该含有那些字符呢?

第一行应该有这样四个字符:'a',' ','v','\n'

第二行应该有这样三个字符:'b','b','\n'

第三行应该有一个字符:'e'

注意我们分析的依据是:创建文件的末尾一行时,输入e之后,没有按回车键。 故没有\n' 字符在最后一行结尾。那么现在文件中应该一共有8个字符,我们使用K&R中的计数字符数量的示例代码进行计数:

#include<stdio.h>

/* count characters in input; 1st version */
int main()
{
    long nc;

    nc = 0;
    while (getchar() != EOF) {
        ++nc;
    }
    printf("%ld\n", nc);

    return 0;
}

结果是9。

甚至我们可以使用bash命令wc 来进行计数,最后的结果还是9.

为什么呢?

解答:

在计算机科学的传统中,我们倾向于让文件中的每一行都以一个'\n' 字符结尾,也因此,许多流行的,常用的文本编辑器,如Vim, Gvim, Nano, Gedit都会自动在文件结尾加入一个'\n' 字符,无论文件的最后是不是'\n'字符。这也就解释了为什么字符数量是9.因为Vim自动增加了一个'\n'字符。

想要真正的可视化一个文件中的所有字符,我们可以在Linux下使用hexdump -C命令,如下

$ hexdump -C test
00000000  61 20 76 0a 62 62 0a 65  0a                       |a v.bb.e.|
00000009
延伸阅读

这个网站是解释为什么我们倾向于让文件每行以'\n'字符结尾

接下来就是知道如何使得文中提到的编辑器不再自动再文件尾增加换行符

这两篇文章都是英文,由于时间原因,未能翻译,见谅!

本文中的翻译,如果各位觉得有问题,可以评论,谢谢!

关于 SAP Fiori Elements 开发项目里的本地 annotation.xml 文件 文件通过引用 SAP 提供的标准词汇表和本地 OData 服务的元数据,为 Fiori Elements 应用定义了一个基础的注解结构。开发者可以在此基础上添加具体的注解,以满足特定的业务需求和界面定制。文件用于定义本地注解,以补充或覆盖来自后端 OData 服务的元数据。元素内添加具体的注解,以定制 Fiori Elements 应用的界面和行为。的架构,用于在本地注解中定义实体、类型和注解。这使得在本地注解中可以引用该 OData 服务的实体和类型。等,用于控制界面元素的显示和行为。 阅读详情

相关推荐

Windows打印体系结构之Windows内置打印驱动程序

时间是一种很残酷的东西,它只会冲淡能够冲淡的,但也会洗尽铅华帮你留下该留下的。1.3.4、Windows内置打印驱动程序现在的Windows下的打印机驱动程序通常分为V4打印机驱动程序(V4 Printer Driver)、XPS打印机驱动程序(XPSDrv)、微软通用打印机驱动程序(Microsoft UniversalPrinter Driver)、微软PostScri...

weixin_34309435的博客 2253

python读取txt文本文件,字符长度多1

在文本中每行开头都有个"/n",代表换行,此换行符占了1个长度,可用len(str)查看。使用 new_str = str.strip(),即可实现去除换行符,再用len(str)检查。

jasonxin8的博客 4619

计算机考研复试面试常问问题 数据结构篇(下)

计算机考研复试面试常问问题 数据结构篇(下) 使用前需知(拒绝白嫖,如果对你有帮助,你只需点个赞就行): 注意:有人在闲鱼上盗卖我的资料,而且还有很多同学买了,请各位擦亮双眼,我是整理出来免费分享给大家的! 大家请多点赞和评论,这样后面的同学更容易百度到,不至于被人盗卖,我就不加水印影响大家使用了! 第一次整理,度不好控制,有不好的地方希望大家理解,后面可能会改进,造福今年之后的同学们! ...

程序员宝藏的博客 1万+

wc -m命令在统计字符数的时候为什么总是多一个?

这是知乎上一个小伙伴的提问,原问题如下: 看到这个问题,我的第一反应就是,应该是有换行符或者结尾符的存在。 计算机行业最大的好处就是可以复现,那我们来复现一下: 按照你说的,我们来测试下: [root@laoxin-06 ~]# cat a.txt aaa b 可以看到一共5个字符,当我们去使用wc -m 和wc -c查看的时候 [root@laoxin-06 ~]# wc -c a.txt 6 a.txt [root@laoxin-06 ~]# wc -m a.txt 6 a.txt [root@l

互联网老辛 3447

STM32外围电路硬件解析

复位 :让MCU回到最开始的状态。并且从头开始,重新执行程序 我们什么时候需要复位? 1.烧录的时候 2.程序跑飞了的时候 3.上电复位(上电的时候需要复位) 复位方式: 1.上电复位: --- 一定要有 MCU的Reset是复位引脚,当这个引脚为低电平时,

qq_39577221的博客 1万+

基于Openrouter的API调用免费大模型

Openrouter 是一个 AI 模型聚合平台,整合了全球 200 多种主流 AI 模型,包括 GPT-4、Claude、Gemini 等,以及国产通义千问、DeepSeek 等。其核心优势是统一的 API 设计,开发者仅需少量代码即可与多个模型交互,还支持自动路由与回退机制。用户可通过 OpenAI SDK 或 LangChain 调用 Openrouter 中的模型。

MurphyStar的博客 6202

浅谈字符数组

浅谈字符数组

ANNE_fly的博客 7334

【拼多多笔试题汇总】2024-03-24-拼多多春招笔试题

A 小镇上有个奇特的游戏。游戏开始时,A 先生准备了一排 nnn 个物品。K 小姐和卢小姐则轮流进行操作。首先,K 小姐可以选择移除至多 xxx 个物品。接着,卢小姐也可以选择移除剩余物品中的至多 yyy 个。游戏的目标是,K 小姐想尽量让剩余物品的价值之和最大化,而卢小姐则想将剩余物品的价值之和最小化。假设两人都采取最优策略,请问最后剩余物品的价值之和是多少?第一行包含五个正整数 n,m,k,x,yn, m, k, x, yn,m,k,x,y,分别表示物品的总数、K 小姐最多可移除的物品数、卢小姐最多可移

春秋招笔试突围 1万+

字符数组的一写特性

     字符数组是元素类型为字符的数组,它既具有普通数组的一般性质,又具有某些特殊性质。     字符串常量是用双引号包围的字符序列。存储字符串常量时,系统会在字符序列后自动加上/0,标志字符串的结束。字符串的长度定义为字符串中的有效字符数,不包括结束标志/0和双引号。     字符串变量是以/0作为结束标志的字符数组。字符串变量用于存储和处理字符串常量。在书中统称为字符串的

summerlemon的专栏 3182

YOLO小目标检测优化:9种实用方案,准确率直接提升15%

小目标检测是个系统工程,没有银弹,但有明确的优化路径。优先搞数据。Copy-Paste + 提升分辨率,这俩加起来成本最低、收益最大,能解决80%的小目标问题。别一上来就改模型结构。调参走在改结构前面。锚框聚类、损失加权、增强优化,这些都是零成本的,先做满了再说改模型的事。P2层是大杀器,但不要轻易用。加了P2层,TensorRT部署、后处理、速度都要跟着调,工程化工作量翻倍。数据和训练做到位还不够,再加也不迟。滑动窗口是兜底的。能从训练端解决的问题,就不要拖到推理端。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 187

SAP PI 系统复制,不只是把数据库拷过去,而是一次集成拓扑的重新落位

文章摘要:SAP PI/PO系统刷新生产数据到测试环境时,标准系统复制无法自动处理集成中枢特有的环境绑定问题。系统复制后,PI仍保留生产环境的连接配置,可能导致测试系统向生产环境发送消息。SAP提供的CTC模板可自动化部分后续配置,但无法替代人工对接口风险的全面评估。关键在于系统复制前绘制接口风险地图,复制后进行分层次验证:禁用生产连接、重定向测试接口、复核安全配置,并通过代表性链路测试确保系统行为符合预期。这需要结合SAP标准流程与业务语义判断,形成完整的治理闭环。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 83

java统计一个文件的字符数,单词数,行数

 package A9chapter; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream...

洋葱专栏-有灵魂的程序员 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

用C语言读取txt文件并统计字符数

使用fgets函数读取并显示总字符数 在源文件目录下读取test.txt文件 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NUM 1024 int main(void){ char buf[MAX_NUM]; //字符缓冲区 FILE *fp; ...

PengDQ12的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

字符数_如何查看论文的字符数?字符数与汉字数的区别

很多作者朋友投稿,对杂志社征稿函中的“字符数”表示不理解。他们觉得,“字符数”不就是“汉字数”吗?其实不然,这是两码事。很多作者朋友投稿,对杂志社征稿函中的“字符数”表示不理解。他们觉得,“字符数”不就是“汉字数”吗?其实不然,这是两码事。字符的定义是:字符是电子计算机或无线电通信中字母、数字、符号的统称,其是数据结构中最小的数据存取单位,通常由8个二进制位(一个字节)来表示一个字符。在ASCII...

weixin_39666496的博客 8752

含有字母数字的字符串累计加一

含有字母数字的字符串累计加一(eg:s001->s002) 写了一个函数 针对字母部分和数字部分拆分,然后对数字部分进行加一,为什么不直接bar.toInt();因为如果字符串够长,超出int的范围,就会很难受; 所以将字符串拆分为字符数组,再依次判断+1,满十归0,前一位加1,如果是第一位满十,需要新加一位。 代码内都有注释,如下: /** * @brief MainWindow::barcodeAdd 条码累加 * @param bar 需要被计算的字符

光顶术士的博客 1099

字符数组

1、什么是字符数组 用来存放字符的数组就是字符数组,字符数组的每一个元素用来存放一个字符。 eg str[]={‘h’,’e’,’l’,’l’,’o’}; str[0]=’h’;str[1]=’e’;str[2]=’l’,str[3]=’l’,str[4]=’o’; 2、字符数组的初始化 如果在定义数组时不进行数组初始化,则数组中各元素的值是不可预料的,如果花括号的内...

ffsiwei的博客 1万+

从文件读入字符数组

#include <fstream> using namespace std; char maze[10][10];//字符数组,存储UDLR指令 //文件读入字符数组 void infile(char filename[]) { ifstream f1(filename); if(!f1) cout<<"error"<<endl; ...

Lesel的博客 1541

二维字符数组的定义,初始化及引用,C语言二位字符数组详解

二维字符数组的定义格式为:char 数组名[第一维大小][第二维大小];如://定义了一个3行10列的二维字符数组c由于该二维数组的每一行 c[0]、c[1]、c[2] 均是含有 10 个元素的一维字符数组,即二维数组的每一行均可表示一个字符串。

m0_65765946的博客 4385

用lex统计文本文件字符数

我曾经在Linux上写的一个C程序,借助Lex做词法分析来同时统计N个文本文件的字符数,单词数和行数。让我觉得Lex确实挺有意思的。确实Lex的功能非常强大,用来做小巧的词法分析非常适合,也非常好用。这个程序参考了《Lex与Yacc》上的一个例子。%{ unsigned int char_count = 0, word_count = 0, line_count = 0; %} %% [^ /

zhaowei的专栏 5785

统计文件中的字符数、单词数以及总行数

【总结】 1.读取文件字符的一般步骤:首先打开文件并判断是否正常打开;然后先读取一个字符,然后判断是否为空文件,如果不是空文件则做循环;输出字符;读取下一个字符,如果下一个字符为EOF则结束循环。 2.统计文件中单词的数目:用word来标记,如果word为0表示此前的字符不是字母,未开始一个新单词;如果word为1表示已经开始或正在读取一个单词。 3.用二维数组来存储每行的字符数和单词数。 ...

Read by heart 4003

字符数组详解

用来存放字符数据的数组是字符数组。字符数组中一个元素存一个字符。

office_lgirl的博客 9542

字符数组一

字符数组: 字符数组:char arr[10] = { 'a', 'b', 'c', 'd', 'e' }; 没有被初始化的字符数组元素将被默认为ASCII码为0的'\0' 保存字符串的两种方法: 一:使用字符数组进行保存:定义字符串的时候可以不加双引号 二:使用指针进行保存 一个字符占一个字节,一个汉字占两个字节 初始化字符数组的时候也可以用汉字 字符串在计算内存时候会在末尾加上一个ASCII码值为0的'\0' 如何理解字符数组保存的时候是保存的字符还是字符串: 方法一:利用数组的大小可.

m0_65334415的博客 597

为什么字符数组要以\0结尾

一个数组能不能把数组元素大小作为一个元素放在数组的末尾 如果是char类型数组 char string[6]={'h','e',l',l','o',5}; 我觉得是可以的,但是如果这个数组元素比较长,而程序员不小心把有可能就把最后一个元素当作字符来输出了,这时候会影响到程序,所以直接数组大小作为数组最后一个元素这种方式是有隐患的。 ‘\0’这个字符即作为一个字符不经常被用来当作实...

weixin_30387339的博客 4612
上一篇: POJ 2785(4 Value whose sum is 0)(双哈希)
下一篇: A New Page In My Life, As A Programmer
FitzLeopard
博客等级 码龄9年 6粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值