首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在for循环中崩溃

在for循环中崩溃
EN

Stack Overflow用户
提问于 2012-05-06 22:14:44
回答 3查看 182关注 0票数 1

我正在试着写一个文本文件。当我不使用for循环时,我可以写得很好,但是当我实现它来将我所有的数组写到文件中时,它会崩溃。下面是我的代码:

代码语言:javascript
运行
AI代码解释
复制
void writeFile(void)
{
  char *fileName[30];
  cout << "enter a filename";
  cin >> *fileName;
  ofstream myfile;
  myfile.open (*fileName);
  int p;

  for(p = 0; p <= i; p++)
    {
      myfile << right << setw(4) << setfill('0') << packet[i].getSource() <<  ":";
      myfile << right << setw(4) << setfill('0') << packet[i].getDest() <<  ":";
      myfile << right << setw(4) << setfill('0') << packet[i].getType() <<  ":";
      myfile << right << setw(4) << setfill('0') << packet[i].getPort() <<  endl;
    }

你知道我哪里错了吗?

EN

回答 3

Stack Overflow用户

发布于 2012-05-06 22:20:14

fileName是一个由30个未初始化的字符指针组成的数组。*fileNamefilename[0]相同,后者是指向字符的未初始化指针。您不能将此指针用于任何操作,只能为其赋值。然而,您并没有这样做,相反,您正在尝试将数据读取到其中,这将带来可预见的灾难性后果。

简而言之,你根本不应该在C++中使用任何指针,而是根据自己的情况使用std::string

代码语言:javascript
运行
AI代码解释
复制
std::string fileName;
if (!(std::cin >> fileName)) { /* I/O error, die */ }
// ...

(也许您想要做的是使fileName成为一个由30个字符组成的数组:char fileName[30];。但不要这么做。即使它可能会起作用,但它也非常糟糕。)

票数 3
EN

Stack Overflow用户

发布于 2012-05-06 22:21:26

还有一件事有点不对劲:

代码语言:javascript
运行
AI代码解释
复制
for(p = 0; p <= i; p++)

你可能想要

代码语言:javascript
运行
AI代码解释
复制
for(p = 0; p < i; p++)

这样就不会试图取消对数组末尾的引用

可能更好的方法是写

代码语言:javascript
运行
AI代码解释
复制
for (int p = 0; p != i; ++p)

这是根据Moo和Koenig推荐的表单:http://www.drdobbs.com/cpp/184402072

我也不会使用char *来读取cin,使用std::string来存储字符串和输入,如果在主writeFile函数的作用域之外不需要内存,则不需要对内存进行new操作。字符串还支持动态调整大小,因此您不需要将其初始化为任何大小,这里是我搜索的第一个示例,以帮助您understand

票数 2
EN

Stack Overflow用户

发布于 2012-05-06 22:25:15

为什么你要用"C方式“来存储你的文件名?你用错了方式: char**。更简单的方法是声明:

代码语言:javascript
运行
AI代码解释
复制
std::string fileName;
while(!std::cin >> fileName);
ofstream myfile(fileName.c_str());

你也在你的循环中使用了i,但是在p上迭代,我认为这不是你想要做的…

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10474741

复制
相关文章
Swift 全局导入Module
我们有时候需要全局导入一个Module,因为这个组件在每个文件都使用很频繁。在OC的时代,PCH做的工作,Swift怎么办呢
星宇大前端
2019/04/01
1.4K0
Swift 4 新特性
private 权限扩大 在 Swift 4 中,extension 可以读取 private 变量了。 Swift 3 中,如果将主体函数的变量定义为 private,则其 extension 无法读取此变量,必须将其改为 filePrivate 才可以。 单向区间 单向区间是一个新的类型,主要分两种:确定上限和确定下限的区间。直接用字面量定义大概可以写成 …6和 2… 例如 let intArr = [0, 1, 2, 3, 4] let arr1 = intArr[...3] // [0,
BY
2018/05/11
9060
Swift 4 新特性
Swift 3 中,如果将主体函数的变量定义为 private,则其 extension 无法读取此变量,必须将其改为 filePrivate 才可以。
零式的天空
2022/03/25
4820
Swift基础 关于Swift
Swift 是编写软件的绝佳方式,无论是手机、台式机、服务器还是任何其他运行代码的内容。这是一种安全、快速和互动的编程语言,它结合了现代语言思维的最佳与更广泛的苹果工程文化的智慧以及开源社区的各种贡献。编译器针对性能进行了优化,语言也针对开发进行了优化,同时不影响两者。
郭顺发
2023/07/17
1310
4.Swift教程翻译系列——Swift基本运算符[通俗易懂]
英文版PDF下载地址http://download.csdn.net/detail/tsingheng/7480427
全栈程序员站长
2022/07/07
7620
Swift进阶一:Swift简介
Swift语言引入了协议、协议的扩展、泛型等新特性,因此使用Swift语言可以很好地面向协议编程;Swift语言将函数和闭包提升为语言的一等公民,函数可以作为一个变量、可以作为其他函数的参数、作为其他函数的返回值等来传递,所以我们可以使用Swift来进行函数式编程,另外Swift也提供了很多高阶函数来辅助我们进行函数式编程;Swift也提供了属性的权限限定等面向对象的基础设置,因此在Swift中也可以面向对象来编程。
拉维
2020/07/09
2.9K0
Swift进阶一:Swift简介
Swift4 String的用法
本文语法为Swift4 获取字符串的长度 let str = "窗前明月光,疑是地上霜"; let length = str.count; 正则获取字符串 let str = "哈哈[呵呵]嘿嘿" if let range = str.range( of: "\\[[^\\[^\\]]+\\]", options: NSString.CompareOptions.regularExpression, range: nil, locale: nil ){ if
码客说
2019/10/22
5220
【Swift4】(7) 枚举 | 应用
前端修罗场
2023/10/07
1540
Swift
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118291.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/13
2.1K0
Swift 入门:编译 Swift 源码(1)
编程语言的很多特性都是依赖于编译器的。比如,与 C 语言的枚举相比,Swift 的枚举就依赖编译器实现了关联值等高级特性。
酷酷的哀殿
2020/11/07
6.5K1
Swift 统一导入三方库
此时在Swift中的宏定义那就只能找个文件直接let了,比如Const.swift之类的。
韦弦zhy
2018/09/11
2.1K0
Swift 入门:编译 Swift 源码(2)
我们曾经在上一篇文章中 https://cloud.tencent.com/developer/article/1744552 提到 Swift 及相关组件的编译会耗费大量的磁盘空间。
酷酷的哀殿
2020/11/15
2K0
Swift 入门:编译 Swift 源码(2)
Swift和OC互调(一)Swift调用OCOC调用Swift
整理之前学习swift的笔记,虽然现在看起来很简单,但还是想分享出来。 (一)Swift调用OC 假设:我们的项目是Swift的。项目中用到了OC写的一些类。那么怎么让Swift调用OC类呢?如下图:
VV木公子
2018/06/05
13.6K0
Swift4语法新特性 原
      随着iPhone X的来到,iOS11的发布,Swift语言也更新到了第4个版本。在Swift4中,无论是代码风格还是编程理念都更进一步的融合了许多现代编程的思想。对于熟悉传统语言的开发者来说(尤其是Objective-C、Java和C++),可能会感觉这些特性并没有多大的价值反而非常不习惯,但是我们依然可以茶余饭后(没事干的时候),一窥Swift4语言的玩法,体验一下Swift语言的设计思想和编码风格。
珲少
2018/08/15
1.7K0
Swift2转Swift3
接触swift 已经有一年多的时间了,由最初的OC代码转为 swift 代码,然后从 swift 2.3 转为 swift 3。每次的转换都感觉是将项目整个的翻新了一遍,每次的转换代码都是一次改朝换代。
onety码生
2018/11/21
2K0
使用 Swift Package Manager 创建 Swift 包
image.png Using the Package Manager 官网 https://swift.org/getting-started/#using-the-package-manager 进入准备创建 Swift 包文件位置 image.png 创建新的Swift包,首先要创建并输入一个名为的目录 perfect-Qiniu: image.png 进入刚才创建的 perfect-Qiniu 文件
LeeCen
2018/10/11
1.4K0
使用 Swift Package Manager 创建 Swift 包
【Swift4】(4) 控制流 for | switch | if-else
前端修罗场
2023/10/07
1820
Swift-?-!
上面了解到的是普通值,接下来Optional值要上场了。Optional其实是个enum,里面有None 和Some两种类型。其实所谓的nil就是Optional.None,非nil就是Optional.Some,然后会 通过Some(T)包装(wrap)原始值,这也是为什么在使用Optional的时候要拆包(从enum里取出来原始值) 的原因,也是Playground会把Optional值显示为类似{Some”hello world”}的原因,这里是 enum Optional的定义:
用户3004328
2018/09/06
9190
Swift Runtime ?
你肯定也想过       在OC中相信每一个iOS开发都知道Runtime, 现在Swift也更新到4.0版本了,要是你也学习过Swift的话你可能也会想过这样一个问题,OC大家都知道是有动态性的,你能通过Runtime 的API获取你想要的属性方法等等,那Swift呢?是不是也和OC一样呢?       这个问题在我看Swift的时候也有想过,带着这个问题就总结出了今天这篇文章。       先说说这个Runtime,在自己之前的文章中有总结过关于OC的Runtime以及它API的一些基本的方法和在项目中
Mr.RisingSun
2018/02/06
5K0
Swift Runtime ?
swift set
set是一个Set类型的集合,集合中只能出现String类型的数据,如果放入了其他类型,会报错。但是如果没有指定集合中的数据类型,那就没有关系。
赵哥窟
2018/09/13
7550
swift set

相似问题

如何在游乐场中导入Swift软件包?

49

无法将Firebase导入Swift游乐场

20

Swift软件包管理器- Swift 4语法

13

Swift4游乐场凯撒密码错误

23

无法使用Swift 4软件包管理器导入包

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档