| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4103 人关注过本帖
标题:vs中用fopen_s打开文件,如何将数组数据导入文件
只看楼主 加入收藏
owner_chx
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-3-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
vs中用fopen_s打开文件,如何将数组数据导入文件
FILE *fp1_u;                     
    errno_t err1_u;
    err1_u = fopen_s(&fp1_u, "C:\\Users\owner chen\Documents\EX\t1_u.txt", "w");
    fprintf(fp1_u, "时间步长:0.1\n");
    fprintf(fp1_u, "迭代步数");
    for (int i = 0; i < 10; i++)
        fprintf(fp1_u, "%d           ", i);
    fprintf(fp1_u, "\n");
    fprintf(fp1_u, "u的数值解");
    for (int i = 0; i < 10; i++)
        fprintf(fp1_u, "%f           ", u[0][i]);         
    fprintf(fp1_u, "\n");
    fprintf(fp1_u, "u的精确解(sin(ft))");
    for (int i = 0; i < 10; i++)
        fprintf(fp1_u, "%f           ", u0[0][i]);
    fprintf(fp1_u, "\n");
    fprintf(fp1_u, "误差");
    for (int i = 0; i < 10; i++)
        fprintf(fp1_u, "%f           ", r_u[0][i]);
    fprintf(fp1_u, "\n");
    fprintf(fp1_u, "误差比");
    for (int i = 0; i < 10; i++)
        fprintf(fp1_u, "%f          ", err_u[0][i] * 100);
    fprintf(fp1_u, "\n");
    fprintf(fp1_u, "累积误差");
    for (int i = 0; i < 10; i++)
        r = r + r_u[0][i];
    fprintf(fp1_u, "%f           ", r);
    fprintf(fp1_u, "\n");

程序如上,运行到fprintf语句时,会出现:将一个无效参数传递给了将无效参数视为严重错误的函数 的错误。因为使用vs编的只能用fopen_s,请教各位我该如何把文件指针正确指向目标文件,已达到导出的目的。
搜索更多相关主题的帖子: Documents Users 如何 
2015-03-07 11:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
你fopens_s()的語法沒用錯,但文件名字符串錯了。知道處理第一個轉義符,幹嘛不處理後面的轉義符?

授人以渔,不授人以鱼。
2015-03-07 21:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
另外,你定義了並給err1_u賦値,爲什麽不使用它?檢測這個値,衹有爲零時,才是成功打開了文件,非零値是系統給出的錯誤代碼,查表可知文件打開失敗的原因。

授人以渔,不授人以鱼。
2015-03-07 21:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
學編程,要勤思考,也要講究方法。其實根據你的描述,你是調試過的,已經知道程序運行到(第一個)fprintf()時出錯,而報告的信息是無效參數,那麽,無效參數九成是文件指針無效(因爲對printf()系列的格式,後面一切是駕輕就熟的,唯一不熟悉的就是多出來那個文件指針參數,則問題聚焦也首先是那個)。這個大方向確定,然後可以自己設計檢測代碼了:爲什麽不沿用熟悉的思路,檢查一下文件指針是否爲NULL呢?然後,問一下自己,獲取err1_u派什麽用途呢?它用上了嗎?如果沒用,寫來干什麽?這些問題,就是勤思考,自己求解,方爲學習之道。

培養怎麽思考和學習,比人家教你怎麽做、錯在哪裏,要有益得多。這叫教你以漁。不要不屑哲學,熱衷形而下!

你的問題其實是“爲什麽文件無法成功打開”,因爲還沒到讀取數據的階段,而你的標題卻是如何讀數據,這就誤導別人的目標了。


[ 本帖最后由 TonyDeng 于 2015-3-7 23:32 编辑 ]

授人以渔,不授人以鱼。
2015-03-07 22:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
關於轉義字符,很多語言都有,但一般都有固定的格式,比如統一用數値,然而C/C++的比較靈活,允許多種格式,既可用數値,也可用字符,諸如\n、\b之類,與普通的文字夾雜在一起,就極容易出錯。這其實是缺點,需要程序員自己小心(又是C把責任推給程序員的一貫做法)。

C#比較人性化一點,既可以用C/C++傳統的轉移語法,也新增了不轉義的語法,用@冠於字符串前面,即通知編譯器取消轉義解釋,這樣在寫文字尤其是帶路徑的文件名時就不容易出錯。對不支持這種新語法的語言,程序員應該採用能夠清晰閲讀和理解的風格,比如分行寫,或用表達式。中國大陸的很多教材和試題,很喜歡用這種轉義字符文字考人,不良風氣,他們都不是教人回避不清晰的代碼,而是以學生懂看、會寫這種晦澀難懂的代碼爲能。

授人以渔,不授人以鱼。
2015-03-07 23:28
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
敢问楼上是台湾人吗?为什么总是用繁体字

一片落叶掉进了回忆的流年。
2015-03-07 23:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用诸葛欧阳在2015-3-7 23:35:08的发言:

敢问楼上是台湾人吗?为什么总是用繁体字

再說一遍,這是正體字。

授人以渔,不授人以鱼。
2015-03-09 11:06
快速回复:vs中用fopen_s打开文件,如何将数组数据导入文件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026608 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved