我试图写一个函数,它接收一个指向一个文件的指针和两个字符串(一个文件名和一个模式)。它应该请求一个文件名,并在错误检查时打开一个文件。但是代码不能编译,我花了几个小时寻找原因。

#include

#include

#include

#define LEN 41

char* s_gets(char *str, int len);

void openFilename(FILE* fp, char* fname, char* mode);

int main(void)

{

char fname[LEN];

FILE *fp = NULL;

int ch;

// This works

printf("Enter a filename: ");

s_gets(fname, LEN);

fp = fopen(fname, "r");

// This does not

// openFilename(fp, fname, "r");

while ((ch = getc(fp)) != EOF)

putchar(ch);

fclose(fp);

return 0;

}

char* s_gets(char *str, int len)

{

char* ret_val;

char* newline;

ret_val = fgets(str, len, stdin);

if (ret_val) {

newline = strchr(str, '\n');

if (newline)

*newline = '\0';

else

while (getchar() != '\n') continue;

}

return ret_val;

}

void openFilename(FILE *fp, char *fn, char *mode)

{

printf("Enter a filename: ");

s_gets(fn, LEN);

printf("Opening %s... ", fn); // This never runs!

if ((fp = fopen(fn, mode)) == NULL) {

fprintf(stderr, "Couldn't open %s. Quitting.\n", fn);

exit(EXIT_FAILURE);

}

}

这个

s_gets()

如果我从main调用函数,它的工作正常,但是只要我从

openFilename()

我得到了

Segmentation fault: 11

这通常和数组越界有关,对吧?我假设这个字符串不能正确传递

openFilename()

,但我怎么能做到呢?

java duplicate parameter e_传递参数[duplicate]时出现问题相关推荐

  1. java向应用程序传递参数_Java应用程序中的消息传递主体

    java向应用程序传递参数 消息传递是每个Java应用程序的关键方面,尤其是对于涉及企业应用程序集成(EAI)或关注点分离的应用程序,例如多层WEB应用程序. 消息传递可以分为两个主要类别,即同步和异 ...

  2. vue父组件在接收子组件方法传递参数的时,如何添加自定义参数

    在vue中,父组件中使用子组件方法的和传递过来的参数时直接只用参数就可以了,如下: // child this.$emit('change', param) // parent @change='pa ...

  3. java中jsp怎么传递参数_急!Java问题,Java如何获得jsp传递的参数??

    我的jsp页面:while(rs.next()){%> "target="_blank"> 我的jsp页面: while (rs.next()) { %> ...

  4. java代码调用python_java 直接调用python脚本,并传递参数代码实例|chu

    最近陆续用python写了很多文件处理脚本,虽然功能都比较简单 ,但还是感觉到python对文件处理的简洁高效 ,越发觉得java的语法相当的繁琐~ 接到个需求处理ftp数据接口 .所以想把pytho ...

  5. Java中的值传递和引用传递

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?      答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为 ...

  6. Java编程语言是什么传递,即值传递和引用传递的区别

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答案是:值引用 因为Java编程语言只有值传递参数. 当一个对象实例作为一个 ...

  7. java 传入参数_java参数怎么传递参数

    计算机语言给子程序传递参数的方法有两种: 按值传递(call-by-value):这种方法将一个参数值复制成子程序的正式参数.这样,对子程序的参数的改变不影响调用它的参数. 引用调用(call-by- ...

  8. Dockerfile中通过ENV指定动态参数在RUN时传递参数(部署后台jar包时指定端口为例)

    场景 CentOS7中使用Dockerfile部署后台jar包: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119818808 ...

  9. python函数调用时的实参和形参之间传递_python 函数(实参与形参、传递参数)...

    函数 什么是函数?函数是带名字的代码块,用于完成具体的工作.写出一个函数后,就可以一直调用. 定义函数,函数的基本组成: 1.1 向函数传递参数 向函数中传递任意参数,这样打印出的结果就可以根据自己的 ...

最新文章

  1. leetcode 30. Substring with Concatenation of All Words 与所有单词相关联的字串 滑动窗口法
  2. 这款可视化工具,Java 调优起来真的 so easy啊
  3. 计算机网络知识点总结(一)-物理层
  4. NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码
  5. 基于Boost::beast模块的同步HTTP客户端
  6. Flutter Exception降到万分之几的秘密 1
  7. WinDbg+Rotor解析WinForm调用堆栈及实现
  8. android 得到目录,android 获取路径的获取
  9. 万物皆可Graph | 当信息检索遇上图神经网络
  10. java 解析 datatabe,在JAVA实现DataTable对象(一)
  11. web前端面试题【html+css+js+框架】
  12. mysql2008安装失败_sql server 2008为什么会安装失败 sql2008安装失败解决办法
  13. rtl驱动 ubuntu 禁用_Ubuntu如何安装rtl8822be驱动
  14. 关于Windows 7操作系统进行磁盘碎片整理时提示“已使用其他程序计划了磁盘碎片整理程序”的解决办法
  15. android模拟器的录屏,夜神安卓模拟器如何录制视频
  16. SUCTF_2019部分题解复现
  17. 从pwn-summoner理解first fit
  18. 开源公告|腾讯tmagic-editor页面可视化编辑器对外开源
  19. 网易云热歌榜评论(爬虫项目)
  20. Android 11.0 Camera2 默认选择拍照尺寸修改及流程分析

热门文章

  1. 有关计算机利弊的英语作文,急需一篇有关电脑优缺点的作文(英文的)
  2. java网页截图_Java实现的简单网页截屏功能示例
  3. MAMP 无法启动Mysql,错误信息Can't start server : Bind on unix socket: Address already in use...
  4. input 对伪元素(:before :after)的支持情况
  5. python之(re)正则表达式下
  6. ID3/C4.5/Gini Index
  7. IModelBinder
  8. 使用过的MySql查询语句[待续...]
  9. Api demo源码学习(4)--App/Activity/Dialog --Activity以Dialog形式呈现
  10. Python使用Apriori算法分析导演请某演员后还会请哪个演员