DEV-C++中编写了一段C程序,其中设置了用文件进行输入输出。
你用DevC++生成file.exe出来,然后把输入的数据保存在a.txt里。输入输出重定向这样写:file.exe b.txt你的输出就到b.txt里了。当然,这要在“命令提示符”里进行。
等你学了 FILE 之后在说吧,都还没学呢你,书上有相关函数的
你说的很含混。 我听的云里雾里。
ifstream不是可以关联一个文件么?
这就可以啊。
注:
不清楚你是要编译时的数据文件绑定,还是运行时的数据读取。
标准输入输出:
1. scanf, printf
int scanf(const char *format, arg_list)
scanf主要从标准输入流中获取参数值,format为指定的参数格式及参数类型,如scanf("%s,%d",str,icount);
它要求在标准输入流中输入类似"son of bitch,1000"这样的字符串,同时程序会将"son of bitch"给str,1000给icount。
scanf函数的返回值为int值,即成功赋值的个数,在上例中如果函数调用成功,则会返回2,所以我们在写程序时,可以通过语句
if( scanf("%s,%d",str,icount) != 2)
{
...
}
来判断用户输入是否正确.
例子:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Input Data:\n");
char str[64];
int num;
scanf("%s,%d", str, &num);
printf("%s,%d", str, num);
return 0;
}
Input Data:
nihao,1
nihao,1,2009091631
此处将","当做了与前面的nhao以及1一起的字符串。注意scanf时,是以空格,制表符以及回车作为变量之间的分割的。
因此在使用scanf时尽量采用这几个作为分割标记。而不要像scanf("%s,%d", str, &num);,它无法正确输入数据。
int printf(const char *format, arg_list)
printf主要是将格式化字符串输出到标准输出流中,在stdio.h头文件中定义了标准的输入和输出,分别是stdin,stdout。
arg_list可以是变量名,也可以是表达式,但最终都会以值的形式填充进format中
格式化输入输出:
1. 格式控制
格式控制是用双引号括起来的字符串,也称"转换控制字符串",它包含以下两部分信息。
格式说明:由"%"和格式字符组成,如%d,%f,%c,它的作用是把输出数据转换为指定格式输出,格式的说明总是由"%"字符开始的.
普通字符:需要原样输出的字符,或者是一些有特殊含义的字符,如\n,\t。
\n 换行
\f 清屏并换页
\r 回车
\t Tab符
\xhh 表示一个ASCII码用16进表示,其中hh是1到2个16进制数
2. 输出列表
就是需要输出的一些数据,也可以是表达式,如果在函数中需要输出多个变量或表达式,则要用逗号隔开。
一些特殊字符的输出:
单引号,双引号,和反斜杠的输出在前面加转义字符”\”,如:"\’", "\"", "\\"。
% 的输出用两个连在一起的%%,即 printf(“%%”);
常用的格式说明如下:
格式字符
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀0)
x 以十六进制形式输出无符号整数(不输出前缀0x)
u 以十进制形式输出无符号整数
f 以小数形式输出单精度实数
lf 以小数形式输出双精度实数
e 以指数形式输出单、双精度实数
g 以%f,%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
特殊:
对64位整数的输入输出,在POJ上的C++环境下(即VC),64位整数是:
__int64 (注意int前面是两个下划线),输入输出格式为”%I64d”.
在G++环境下(即Dev C++) 64位整数是
long long 输入输出格式为”%lld”.
输出宽度
用十进制整数来表示输出的最少位数。注意若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
可以在"%"和字母之间插进数字表示最大宽度。
%9.2f 表示输出场宽为9的浮点数,其中小数位为2,整数位为6,小数点占一位,不够9位右对齐。
%8s 表示输出8个字符的字符串, 不够8个字符右对齐。
如果字符串的长度,或整型数位数超过说明的场宽,将按其实际长度输出。
但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;
若小数部分位数超过了说明的小数位宽度,则按说明的宽度以四舍五入输出。
另外,若想在输出值前加一些0, 就应在场宽项前加个0。
例如: d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。
如果用浮点数表示字符或整型量的输出格式,小数点后的数字代表最大宽度,小数点前的数字代表最小宽度。
例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9,则第9个字符以后的内容将被删除。
精度
精度格式符以"."开头,后跟十进制整数。意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;
若实际位数大于所定义的精度数,则截去超过的部分。
标志格式字符
- 结果左对齐,右边填空格
+ 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号
例如:
double c = 24212345.24232;
printf(“%020.4”); 表示输出精确到小数点后4位,输出占20位,若有空余的位补0。
2. getc,putc
int getc(FILE *fp)
getc主要是从文件中读出一个字符.常用的判断文件是否读取结束的语句为:(ch = getc(fp)) != EOF。EOF为文件结束标志,
定义在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定义在stdlib.h中一样,文件也可以被理解为一种流,所以当fp为stdin时,
getc(stdin)就等同于getchar()了.
int putc(int ch,FILE *fp)
putc主要是把字符ch写到文件fp中去。如果fp为stdout,则putc就等同于putchar()了。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE * fp = fopen("tmp.txt", "w+");
putc('a', fp);
fflush(fp);
fclose(fp);
fp = fopen("tmp.txt", "r+");
int c = getc(fp);
printf("%c\n", c);
fclose(fp);
int ch = getc(stdin);
putc( ch, stdout);
putc( '\n', stdout);
putc('a', stdout);
return 0;
}
3. getchar,putchar
int getchar(void)
getchar()主要是从标准输入流读取一个字符。默认的标准输入流即stdio.h中定义的stdin。但是从输入流中读取字符时又
涉及到缓冲的问题,所以并不是在屏幕中敲上一个字符程序就会运行,一般是通过在屏幕上敲上回车键,然后将回车前的字符
串放在缓冲区中,getchar() 就是在缓冲区中一个一个的读字符。当然也可以在while循环中指定终止字符,如下面的语句:
while ((c = getchar()) != '#')
这是以'#'来结束的。
int putchar(int ch)
putchar(ch)主要是把字符ch写到标准流stdout中去.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
while((n = getchar()) != '#')
{
putchar((char)n);
}
return 0;
}
4. gets,puts
char * gets(char *str)
gets() 主要是从标准输入流读取字符串并回显,读到换行符时退出,并会将换行符省去。
返回值为获得的字符串的首地址,实现链接操作。
int puts(char *str)
puts() 主要是把字符串str写到标准流stdout中去,并会在输出到最后时添加一个换行符。
返回值为0表示正常,非零表示错误
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[256];
printf("%s\n", gets(str));
int ret = puts(str);
printf("len: %d\n", ret);
return 0;
}
-物联网校企联盟技术部
...的event,最好能给个实例,只写了一个createevent但不知道怎么弄了_百...
if ((errs & Win32Com.CE_TXFULL) != 0) {s = s.Append("Transmit Overflow,"); ec++;} if (ec > 0){ s.Length = s.Length - 1;throw new CommPortException(s.ToString());} else { if (errs == Win32Com.CE_BREAK){ eventMask |= Win32Com.EV_BREAK;} else { throw ...
evc++中的m_strTransmit词是什么意思?
变量 CString 类型的。。Ctrl + w 按键组合 出来一个向导CLASS 选择member 就可以看到了。。
求大神指导,omnet++(基于C++)里 ev<<this->myId<<" energy: "<<energy...
ev是类似于cout的东西,就是将某些内容输出到这个实例的 <<代表输出动作了
什么是C++
在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,但在编写大型程序时,C语言仍面临着挑战。1983年,贝尔实验室的Bjarne Stroustrup在C语言基础上推出了C++。C++进一步扩充和完善了C语言,是一种面向对象的程序设计语言。 名称由来 C++这个名字是Rick Mascitti于1983年中所建议的,并于...
如何使用电脑的红外线端口遥控电视机等家电?
只须懂C++,编写程序如下:UINT CIrPulse::FindIrPort(){ \/\/ 查询注册表中的IR端口号 HKEY hKey = NULL;if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("Comm\\IrDA"),0, 0, &hKey) == ERROR_SUCCESS){ DWORD dwType = 0;DWORD dwData = 0;DWORD dwSize = sizeof(dwData);if (RegQueryValueEx(...
C++;list ; push back 前面的值总是被新值覆盖
简单的说:你指针的使用出了问题 你的程序做了这样一件事情:修改EL的值,然后将其地址push到EList中,结果是EList中所有元素均指向EL的地址,那么当EL的值变化时,EList中的内容显然都发生了变化(因为他们都指向相同地址上的值)而你想做的事情是:修改EL的值,然后将这个值(而不是地址)push到...
c语言大师开课了:用Turbo CC++运行你的第一个C程序
C语言编程入门:使用Turbo CC++运行你的首个C程序 学习编程并非与生俱来的能力,而是通过实践和经验积累得来。编写高效程序,需要理解和实践不同的算法,经历错误与调试。掌握C语言,关键在于编写并实践各种程序,这需要一个良好的C语言编译器。Turbo CC++是Windows上的一种理想选择,Linux用户则可考虑GCC...
ffmpeg播放器(一) 视频解码与播放
进入视频解码与播放的阶段,首先创建一个包含准备、开始、画布等功能的类。在`MainActivity`中,获取地址等信息,为后续的编码和播放做准备。接着,开始编写C++代码,完成解码与播放的核心逻辑。学习资源推荐:点击下方链接免费报名,先保存为将来学习不迷路。免费学习地址:FFmpeg\/WebRTC\/RTMP\/NDK\/Android音...
如何在vc中实现jpeg文件的显示和exif的读取?(代码)
但作为众多程序员的一个重要的开发工具--Microsoft Visual C++ 6.0的MFC库却仅对没有经过任何压缩的BMP位图文件有着良好的支持,可以读取、显示、存储甚至在内存中创建一块内存位图。由于BMP格式的图像没有经过任何的压缩,不论是作为程序的外部文件,还是作为程序的内部资源都要占据大量的空间,尤其是后者会大大增加可...
C\/C++编程笔记:“ int main()”和“ int main(void)”的区别?_百度知 ...
因此,"int main()" 和 "int main(void)" 的区别在于函数调用的约定和参数的指定。在C语言中,明确使用 "int main(void)" 可提高代码的清晰度和一致性。而在C++中,两者等效,但明确指定参数类型可以增强代码的可读性和可维护性。实践是检验真理的唯一标准。尝试编写并运行以下C程序,以亲身体验 "...