1
Siemens WinCC 7.0에서 C 스크립트를 사용하여 원본 및 대상 쉼표가 포함 된 텍스트 파일을 읽는 중입니다.c 스크립트가 마지막 루프 실행시 이름 만 변경하는 이유
C:\Users\Administrator\Desktop\C File Transfer Test\Source\Cat.txt,P:\Cat.txt
C:\Users\Administrator\Desktop\C File Transfer Test\Source\Cat1.txt,P:\Cat1.txt
C:\Users\Administrator\Desktop\C File Transfer Test\Source\Cat2.txt,P:\Cat2.txt
C:\Users\Administrator\Desktop\C File Transfer Test\Source\Cat3.txt,P:\Cat3.txt
C:\Users\Administrator\Desktop\C File Transfer Test\Source\Cat4.txt,P:\Cat4.txt
나는
#include "apdefap.h"
void File_Transfer()
{
#define MODUL "CopyProjekt "
char pathIn[100];
char pathOut[100];
char szProjektname[255];
FILE * fpInFile ;
FILE * fpOutFile ;
FILE *TempSource;
FILE *TempDestination;
#pragma code ("kernel32.dll")
BOOL CopyFileA(LPCTSTR,LPCTSTR,BOOL);
#pragma code()
DM_DIRECTORY_INFO dmDirInfo;
DM_PROJECT_INFO dmProjectInfo;
CMN_ERROR dmError;
char *source;
char *destination;
char line[1000];
char * tokens;
char *tempTokens;
int i;
char tempString[1000];
if (DMGetProjectDirectory("PDLRT", szProjektname, &dmDirInfo, &dmError)!= NULL)
{
strcat(pathIn , dmDirInfo.szProjectDir) ;
strcat(pathOut, dmDirInfo.szProjectDir) ;
strcat(pathIn ,"FilesForTransfer\\FileData.txt");
strcat(pathOut ,"FilesForTransfer\\FileDataTemp.txt");
//(NULL,pathIn ,"2", MB_YESNO|MB_ICONQUESTION|MB_SYSTEMMODAL);
}
//Open the file containing the folder names and paths
fpInFile = fopen(pathIn,"r");
fpOutFile = fopen(pathOut,"w");
while (fgets(line,sizeof line,fpInFile) != NULL)
{
MessageBox(NULL,line,"Read Line",MB_YESNO|MB_ICONQUESTION|MB_SYSTEMMODAL);
tempTokens = line;
tokens = strtok(tempTokens ,",");
while (tokens != NULL)
{
if (i == 0)
{
source = tokens ;
}
else
{
destination = tokens ;
}
i = i + 1;
//read the tokens again
tokens = strtok(NULL ,",");
}
//MessageBox(NULL,source ,destination, MB_YESNO|MB_ICONQUESTION|MB_SYSTEMMODAL);
//Move the file from source to destination
//if (CopyFileA(source,destination,FALSE) != 0)
if (rename(source ,destination)!=0)
{
MessageBox(NULL,"FAILED" ,"Transfer", MB_YESNO|MB_ICONQUESTION|MB_SYSTEMMODAL);
}
else
{
MessageBox(NULL,"PASSED","Transfer",MB_YESNO|MB_ICONQUESTION|MB_SYSTEMMODAL);
}
}
//rename(source,destination)
//fputs(tempstring,fpOutFile);
fclose(fpInFile);
fclose(fpOutFile);
remove(pathIn);
rename(pathOut ,pathIn);
//MessageBox(NULL,"done" ,"Done" , MB_YESNO|MB_ICONQUESTION|MB_SYSTEMMODAL);
}
이 상자가 제대로 모든 시간과 소스와 대상을 실행하는 메시지가 표시됩니다
대상으로 소스에서 파일을 이동을 통해이 파일 및 루프를 열고 다음 코드를 사용하고 바르게. 그러나 마지막 파일 이름 변경 만 작동합니다. 소스의 참조 파일에 행이 하나만 있으면 대상이 올바르게 작동합니다. 둘 이상이면 마지막에 대해서만 작동합니다.
코드를 올바르게 실행할 수 있고 조회 파일에서 올바른 데이터를 가져 오지만 이름이 올바르게 작동하지 않습니다. 어떤 아이디어라도 감사 할 것입니다. 감사
미안하지만, 새 라인 문자를 어떻게 제거합니까? – user2291370
@ user2291370 페이지를 새로 고침하십시오. – hmjd