竞赛或本地调试中的重定向输入输出:
freopen("D:\\abc.txt","r",stdin); //输入重定向,输入数据将从D盘根目录下的in.txt文件中读取
freopen("D:\\abc.txt","w",stdout); //输出重定向,输出数据将保存在D盘根目录下的out.txt文件中
对于多数据时,调试很方便。如果不可用,可能是版本不支持,需要用freopen_s()自行百度。
c语言读入一行字符串
1.如果字符串不含空白符:
用scanf("%s")很方便,注意遇到空白符才会停止。
2.gets()读取一行,遇到换行符停止,并把换行符换成 '\0'添加到字符数组。如果没有遇到换行符会一直读,那么轻则超过字符数组的范围,重则程序崩溃。
3.fgets()
char *fgets(char *buf, int bufsize, FILE *stream);
fgets() 函数主要用于读取文件,如果要读取键盘,则stream参数应该为stdin,
需要注意的是,如果bufsize设置为n,那么fgets()函数最多读取n-1个字符,之所以用“最多”这个词是因为,如果在之前遇到了换行符,fgets函数也会返回。
参考用法:fgets(ch,sizeof(ch),stdin);
但是它只会读取n-1个字符(如果没有提前遇到换行符的话),最后一个字符是给 '\0'的,另外如果空间足够,它会读取换行符。
c++:
未完待续。。。