c 指针 文件输入输出-C语言fprintf和fscanf问题

问题描述

C语言fprintf和fscanf问题

这段代码是为了打开一个文件,用fprintf输入字符串,在用fscanf返回,最后看fscanf的返回值。但是这段程序一运行就出错,猜测是指针访问问题,但是不明白原理。请大家帮忙看下,谢谢!
出错提醒是:0xCDCDCDCD 处有未经处理的异常(在 ConsoleApplication1.exe 中): 0xC0000005: 执行位置 0xCDCDCDCD 时发生访问冲突。

代码如下
#include
#include

int main(void)
{
char filename[20]="e:abc.txt";
FILE*fp;
int n;
char str[20]="yes";
if((fp=fopen(filename,"w"))==NULL) perror("open error");
fprintf(fp,"%s",str);
n=fscanf(fp,"%s",str);
printf("%d",n);
fclose(fp);
return 0;
}

解决方案

0xCDCDCDCD
看到这个数字,想都不要想,肯定是没有正确分配内存。

解决方案二:

你在文件打开失败时应该结束程序而不是继续读取,比如打开失败执行一个exit函数。打开失败可能是你没有写文件后缀名

解决方案三:

打开方式的问题!!!!!!!!!!!!!!!!

时间: 2024-11-03 05:08:22

c 指针 文件输入输出-C语言fprintf和fscanf问题的相关文章

文件的输入和输出-C语言写使用fprintf和fscanf的问题

问题描述 C语言写使用fprintf和fscanf的问题 我这个程序是用C语言写的,其中构造了两个函数来将我输入的数据保存到文本文件当中,可是调用savefile函数保存数据到文件中,再调用readfile函数时所输入的数据都没了,说明一下,我做的这个是通讯录管理系统,这两个函数的代码如下,求大神帮我解答,在此本人先谢过了 void readfile() { char *p="Linkman.txt"; FILE *fp; int i=0; if ((fp=fopen("Li

c语言-OJ的输入输出 C语言的输入输出多组测试数据

问题描述 OJ的输入输出 C语言的输入输出多组测试数据 请问OJ测试代码时是如何输入输出的?C语言如何实现多组数据的输出?比如这道题 "水仙花数"是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3. 现在要求输出所有在m和n范围内的水仙花数. Input 输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999). Output 对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等

java文件输入输出-我该怎么将学生的信息写入到一个硬盘文件里面,新手不理解文件输入输出。

问题描述 我该怎么将学生的信息写入到一个硬盘文件里面,新手不理解文件输入输出. import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.*; public class PrintWriterTest { //学号.姓名.性别.出生日期.所学专业 private int number; private String name; private String sex; private Str

C语言安全之数组长度与指针实例解析_C 语言

1.C语言编码需要保证变长数组的长度参数位于合法范围之内 例如以下代码: void func(size_t s) { int vla[s]; /*...*/ } /*...*/ func(size); /*...*/ 解决方案如下: enum {MAX_ARRAY = 1024}; void func(size_t s) { if(s < MAX_ARRAY && s != 0) { int vla[s]; /*...*/ } else { //错误处理 } } /*...*/ fu

简单总结C语言中各种类型的指针的概念_C 语言

C语言中有很多关于指针的使用,指针也是C语言的灵魂所在,而且C语言中也有很多有关指针的概念,这里学习并总结了一些知道的概念.  常量指针:首先它是一个指针,常量只是用来修饰指针的定语.其定义如下: char const * cp; char a='a'; 如何识别呢?根据右结合优先,先是*优先,所以这个cp变量是一个指针,然后是const修饰*,所以这是一个常量指针.即指向常量的指针. cp=&a; //正常语法 *cp=a; //错误语法,因为其指向的值是一个常量  指针常量:首先它是一个常量

C++普通函数指针与成员函数指针实例解析_C 语言

C++的函数指针(function pointer)是通过指向函数的指针间接调用函数.相信很多人对指向一般函数的函数指针使用的比较多,而对指向类成员函数的函数指针则比较陌生.本文即对C++普通函数指针与成员函数指针进行实例解析. 一.普通函数指针 通常我们所说的函数指针指的是指向一般普通函数的指针.和其他指针一样,函数指针指向某种特定类型,所有被同一指针运用的函数必须具有相同的形参类型和返回类型. int (*pf)(int, int); // 声明函数指针 这里,pf指向的函数类型是int (

c语言-pszBuf为字符串指针,用C语言实现将该字符串中的所有小写字符&amp;amp;#39;a&amp;amp;#39;-&amp;amp;#39;z&amp;amp;#39;转换为大写字符。

问题描述 pszBuf为字符串指针,用C语言实现将该字符串中的所有小写字符'a'-'z'转换为大写字符. 代码中不得调用任何C标准库函数 C语言小白 求解答............................................................................ 解决方案 #include <string.h> void foo(char *pszBuf) { int n = strlen(pszBuf); for (int i = 0; i &l

C语言入门之指针用法教程_C 语言

本文针对C语言初学者详细讲述了指针的用法,并配以实例进行说明.具体分析如下: 对于C语言初学者来说,需要明白指针是啥?重点就在一个"指"上.指啥?指的地址.啥地址?内存的地址. 上面说明就是指针的本质了. 这里再详细解释下.数据存起来是要存在内存里面的,就是在内存里圈出一块地,在这块地里放想放的东西.变量关心的是这块地里放的东西,并不关心它在内存的哪里圈的地:而指针则关心这块地在内存的哪个地方,并不关心这块地多大,里面存了什么东西. 指针怎么用呢?下面就是基本用法: int a, b,

《C语言及程序设计》实践项目——用文件输入输出初步

返回:贺老师课程教学链接 [项目1-由键盘到文件](1)从键盘输入一个文件名,以及一个以#结束的字符序列,将输入的字符保存到文件中去. #include "stdio.h" #include "stdlib.h" int main() { FILE *fp ; char ch,fname[10]; printf("文件名:"); gets(fname); if ((fp=____(1)____)==NULL) { printf("con