我需要使用.txt
,fprintf
和fscanf
作为主要功能,在fopen
文件上撰写和阅读一些文字。
我将它们全部收集在单个头文件中的单个void函数中。此函数应在txt
文件上读写。
这是代码:
void scrivi_valori(int variabili[], int num_variabili, int controlloprimocaso){
FILE * testo;
testo = fopen ("risultati.txt","w+");
if(controlloprimocaso==0){
fprintf(testo, "%d-", 1);
for(i=0;i<num_variabili;i++){
fprintf(testo, "%d.", variabili[i]);
}
fprintf(testo, "-%d\n", 1);
fclose(testo);
}
}
但它不起作用,risultati.txt
完全是空白。真正的问题是我将代码移到了.cpp
文件中并且工作正常,risultati.txt
写得非常完美。
所以我的问题是:为什么此功能在.cpp
文件中有效且它不在.h
文件中?
谢谢大家,但我解决了:) 我把我的标题中的所有函数放在一个file.h中。 我也使用&#34; w&#34;打开文件。模式而不是&#34; w +&#34;模式。 这样做程序完美无缺! 谢谢大家:)
答案 0 :(得分:0)
这可能是愚蠢的,但是,你确定你在代码中包含了a.h吗? 我的意思是你有: #include“a.h” 在您使用或未使用的.cpp代码中? 因为它至少对我有用。
这对我有用: .cpp文件:
#include <stdio.h>
#include <cstdlib>
#include "header.h"
main()
{
int test[2];
test[0]= 3;
test[1]=6;
scrivi_valori(test,2,0);
return 0;
}
和header.h文件
void scrivi_valori(int variabili[], int num_variabili, int controlloprimocaso)
{
FILE * testo;
testo = fopen ("risultati.txt","w+");
if(controlloprimocaso==0)
{
fprintf(testo, "%d-", 1);
for(int i=0;i<num_variabili;i++)
{
fprintf(testo, "%d.", variabili[i]);
}
fprintf(testo, "-%d\n", 1);
fclose(testo);
}
}
请注意我需要声明
答案 1 :(得分:0)
你的做法是错误的。在头文件中,您应该只存储函数的声明,源文件是定义函数的地方。所以,你的头文件应该是:
// your_func.h
void scrivi_valori(int variabili[], int num_variabili, int controlloprimocaso);
和源文件:
// your_func.cpp
#include "your_hunc.h"
void scrivi_valori(int variabili[], int num_variabili, int controlloprimocaso)
{
FILE * testo;
testo = fopen ("risultati.txt","w+");
if(controlloprimocaso==0)
{
fprintf(testo, "%d-", 1);
for(int i=0;i<num_variabili;i++)
{
fprintf(testo, "%d.", variabili[i]);
}
fprintf(testo, "-%d\n", 1);
fclose(testo);
}
}
然后,如果你需要在其他cpp文件中使用scrivi_valori()
函数,你只需要包含一个头文件,预处理器会将你的函数定义粘贴到包含该头文件的文件中。
答案 2 :(得分:0)
您无法在头文件(.h)中编写程序的源代码。 您只需在源文件(.cpp)中编写源代码即可。 在C ++中有扩展名.hpp。 .hpp文件可以像标题一样包含在内,但仍然可能包含源代码。 .hpp文件就像是头文件和源文件之间的折衷。