user-0 提问: 急急急！ 老师布置的用C写一个能将TXT XYH文件转化成CASS格式的dat文件 

回复:
user: user-0
content: 还是显示无法找到文件  是因为我放的位置有问题  还是文件有问题啊 老师您 测试有问题吗？

user: user-1
content: #pragma warning(disable:4996) #include <stdio.h> #include <direct.h> int main() {     FILE *fi,*fo;     int c;     char ln[256];     char fin[256];     char fon[256];     double X,Y,H;     int N;     char buffer[512];      while (1) {         printf("（1）XYH文件转带编号CASS格式文件\n（2）YXH文件转带编号CASS格式文件\n（0）退出\n");         scanf("%d",&c);         if (c==0) break;         if (c==1) {             printf("请输入XYH文件的文件名和扩展名：");fflush(stdout);             rewind(stdin);             gets(fin);             printf("请输入CASS文件的文件名和扩展名：");fflush(stdout);             rewind(stdin);             gets(fon);             fi=fopen(fin,"r");             if (NULL==fi) {                 printf("找不到文件%s\\%s\n",_getcwd(buffer,512),fin);             } else {                 fo=fopen(fon,"w");                 N=1;                 while (1) {                     if (NULL==fgets(ln,256,fi)) break;                     if (3==sscanf(ln,"%lf,%lf,%lf",&X,&Y,&H)) {                         fprintf(fo,"%d,,%lg,%lg,%lg\n",N,Y,X,H);                     }                 }                 fclose(fo);                 fclose(fi);             }         }         if (c==2) {             printf("请输入YXH文件的文件名和扩展名：");fflush(stdout);             rewind(stdin);             gets(fin);             printf("请输入CASS文件的文件名和扩展名：");fflush(stdout);             rewind(stdin);             gets(fon);             fi=fopen(fin,"r");             if (NULL==fi) {                 printf("找不到文件%s\\%s\n",_getcwd(buffer,512),fin);             } else {                 fo=fopen(fon,"w");                 N=1;                 while (1) {                     if (NULL==fgets(ln,256,fi)) break;                     if (3==sscanf(ln,"%lf,%lf,%lf",&Y,&X,&H)) {                         fprintf(fo,"%d,,%lg,%lg,%lg\n",N,Y,X,H);                     }                 }                 fclose(fo);                 fclose(fi);             }         }     }     return 0; } //（1）XYH文件转带编号CASS格式文件 //（2）YXH文件转带编号CASS格式文件 //（0）退出 //1 //请输入XYH文件的文件名和扩展名：abc.txt //请输入CASS文件的文件名和扩展名：cass.dat //找不到文件C:\tmp\tmp\abc.txt //（1）XYH文件转带编号CASS格式文件 //（2）YXH文件转带编号CASS格式文件 //（0）退出 //0 //

user: user-1
content: 现在的码农竟然99%都不会在cmd窗口中输入cd命令设置当前目录为程序所在目录，输入程序名运行程序了！  开始、运行、cmd、确定。 cd /d C:\Users\Administrator\Documents\Visual Studio 2012\Projects\Win32Project1\Project3\Debug Project3.exe  程序员的常识之一：不要将程序源代码或项目或exe放在桌面这种复杂（多半带空格和汉字且在防火墙或杀毒软件严密控制的C盘上）的目录下。

user: user-1
content: #pragma warning(disable:4996) #include <stdio.h> int main() {     FILE *fi,*fo;     int c;     char ln[256];     char fin[256];     char fon[256];     double X,Y,H;     int N;      while (1) {         printf("（1）XYH文件转带编号CASS格式文件\n（2）YXH文件转带编号CASS格式文件\n（0）退出\n");         scanf("%d",&c);         if (c==0) break;         if (c==1) {             printf("请输入XYH文件的文件名和扩展名：");fflush(stdout);             rewind(stdin);             gets(fin);             printf("请输入CASS文件的文件名和扩展名：");fflush(stdout);             rewind(stdin);             gets(fon);             fi=fopen(fin,"r");             if (NULL==fi) {                 printf("找不到文件%s\n",fin);             } else {                 fo=fopen(fon,"w");                 N=1;                 while (1) {                     if (NULL==fgets(ln,256,fi)) break;                     if (3==sscanf(ln,"%lf,%lf,%lf",&X,&Y,&H)) {                         fprintf(fo,"%d,,%lg,%lg,%lg\n",N,Y,X,H);                     }                 }                 fclose(fo);                 fclose(fi);             }         }         if (c==2) {             printf("请输入YXH文件的文件名和扩展名：");fflush(stdout);             rewind(stdin);             gets(fin);             printf("请输入CASS文件的文件名和扩展名：");fflush(stdout);             rewind(stdin);             gets(fon);             fi=fopen(fin,"r");             if (NULL==fi) {                 printf("找不到文件%s\n",fin);             } else {                 fo=fopen(fon,"w");                 N=1;                 while (1) {                     if (NULL==fgets(ln,256,fi)) break;                     if (3==sscanf(ln,"%lf,%lf,%lf",&Y,&X,&H)) {                         fprintf(fo,"%d,,%lg,%lg,%lg\n",N,Y,X,H);                     }                 }                 fclose(fo);                 fclose(fi);             }         }     }     return 0; }

user: user-0
content: 总是显示找不到文件啊~~

user: user-0
content: 你好老师 请问是放在这个位置吗？dat文件我是新建了一个空的dat文件。

user: user-1
content: 引用 4 楼 qq_35581867 的回复:这只是做出了3个按钮 但是无法实现转化啊.总是显示找不到文件 我输入文件名和扩展名。 把要处理的文件拷贝到和exe相同文件夹下。

user: user-1
content: 加这行到我代码最前面： #pragma warning(disable:4996)

user: user-0
content: 这只是做出了3个按钮 但是无法实现转化啊.总是显示找不到文件 我输入文件名和扩展名。

user: user-0
content: 我用我的版本复制这些代码显示了很多警告 	warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.	c:\users\administrator\documents\visual studio 2012\projects\win32project1\project3\project3\源.cpp	28	1	Project3 这个不影响吧

user: user-2
content: 仅供参考：  /* 测试文件: test1.XYH 3175915.493,596570.218,92.128 1,2,3 测试文件: test2.YXH 596570.218,3175915.493,92.128 2,1,3 用法: a.exe test1.XYH 或 a.exe test2.XYH 输出文件: cass.data 0,,3175915.493,596570.218,92.128 1,,1,2,3 */ #include <iostream> //#include <cassert> #include <fstream> #include <string> using namespace std;  typedef unsigned long DWORD; typedef long LONG;  int main(int argc, char* argv[]) { 	if(argc < 2) 	{ 		cout << "usage" << endl; 		return 0; 	} 	string fname = argv[1]; 	ifstream file; 	file.open(fname.c_str()); 	if(!file.good()) 	{ 		cerr << "open file " << fname << " error !" << endl; 		return 0; 	} 	int type = 0; 	if(fname.find(".XYH") != string::npos) 	{ 		type = 1; 	} 	else if(fname.find(".YXH") != string::npos) 	{ 		type = 2; 	} 	if(type == 0) 	{ 		cout << "unknown file type!" << endl; 		return 0; 	} 	string line; 	string x,y,h; 	int index = 0; 	string::size_type first,second; 	ofstream ofile; 	ofile.open("cass.data"); 	if(!ofile.good()) 	{ 		cout << "create file failed" << endl; 		return 0; 	} 	while(getline(file,line)) 	{ 		x.clear(); x.clear(); h.clear(); 		first = line.find_first_of(','); 		second = line.find_first_of(',',first+1); 		if(first==string::npos || second==string::npos) 			continue; 		if(type==1) 		{ 			x = line.substr(0,first); 			y = line.substr(first+1,second-first-1); 			h = line.substr(second+1); 		} 		else if(type==2) 		{ 			y = line.substr(0,first); 			x = line.substr(first+1,second-first-1); 			h = line.substr(second+1); 		} 		else 			continue; 		//cout << index << ",," << x << "," << y << "," << h << endl; 		ofile << index << ",," << x << "," << y << "," << h << endl; 		index++; 	} 	return 0; }

user: user-1
content: #include <stdio.h> int main() {     FILE *fi,*fo;     int c;     char ln[256];     char fin[256];     char fon[256];     double X,Y,H;     int N;      while (1) {         printf("（1）XYH文件转带编号CASS格式文件\n（2）YXH文件转带编号CASS格式文件\n（0）退出\n");         scanf("%d",&c);         if (c==0) break;         if (c==1) {             printf("请输入XYH文件的文件名和扩展名：");fflush(stdout);             gets(fin);             printf("请输入CASS文件的文件名和扩展名：");fflush(stdout);             gets(fon);             fi=fopen(fin,"r");             if (NULL==fi) {                 printf("找不到文件%s\n",fin);             } else {                 fo=fopen(fon,"w");                 N=1;                 while (1) {                     if (NULL==fgets(ln,256,fi)) break;                     if (3==sscanf(ln,"%lf,%lf,%lf",&X,&Y,&H)) {                         fprintf(fo,"%d,,%lg,%lg,%lg\n",N,Y,X,H);                     }                 }                 fclose(fo);                 fclose(fi);             }         }         if (c==2) {             printf("请输入YXH文件的文件名和扩展名：");fflush(stdout);             gets(fin);             printf("请输入CASS文件的文件名和扩展名：");fflush(stdout);             gets(fon);             fi=fopen(fin,"r");             if (NULL==fi) {                 printf("找不到文件%s\n",fin);             } else {                 fo=fopen(fon,"w");                 N=1;                 while (1) {                     if (NULL==fgets(ln,256,fi)) break;                     if (3==sscanf(ln,"%lf,%lf,%lf",&Y,&X,&H)) {                         fprintf(fo,"%d,,%lg,%lg,%lg\n",N,Y,X,H);                     }                 }                 fclose(fo);                 fclose(fi);             }         }     }     return 0; }