.txt 파일에서 읽는 프로그램이 있습니다동일한 .txt 파일, 크기가 다릅니 까?
나는 cmd 프롬프트를 사용하여 읽을 텍스트 파일의 이름으로 프로그램을 실행합니다.
예 :은 Program.exe MYFILE.TXT
문제는 때때로 그렇지 않습니다, 때로는 작동한다는 것입니다.
원본 파일은 130KB이며 작동하지 않습니다. 내용을 복사하여 붙여 넣으면 파일 크기는 65KB이고 작동합니다. 파일을 복사하여 붙여 넣고 이름을 바꾸면 130KB이고 작동하지 않습니다.
아이디어가 있으십니까?
더 많은 테스트 후에는이 작동하지 만드는 것입니다 것을 보여줍니다
int main(int argc, char *argv[])
{
char *infile1
char tmp[1024] = { 0x0 };
FILE *in;
for (i = 1; i < argc; i++) /* Skip argv[0] (program name). */
{
if (strcmp(argv[i], "-sec") == 0) /* Process optional arguments. */
{
opt = 1; /* This is used as a boolean value. */
/*
* The last argument is argv[argc-1]. Make sure there are
* enough arguments.
*/
if (i + 1 <= argc - 1) /* There are enough arguments in argv. */
{
/*
* Increment 'i' twice so that you don't check these
* arguments the next time through the loop.
*/
i++;
optarg1 = atoi(argv[i]); /* Convert string to int. */
}
}
else /* not -sec */
{
if (infile1 == NULL) {
infile1 = argv[i];
}
else {
if (outfile == NULL) {
outfile = argv[i];
}
}
}
}
in = fopen(infile1, "r");
if (in == NULL)
{
fprintf(stderr, "Unable to open file %s: %s\n", infile1, strerror(errno));
exit(1);
}
while (fgets(tmp, sizeof(tmp), in) != 0)
{
fprintf(stderr, "string is %s.", tmp);
//Rest of code
}
}
를 작동하거나, while 루프 내부의 코드가 실행됩니다하지 여부.
tmp가 작동하면 실제로 값이 있습니다. 작동하지 않을 때 tmp에는 값이 없습니다.
편집 : 나 (fgetws를 사용하려면
감사합니다, 우리는 문제가 무엇인지 알고, 을 sneftel하는) 대신는 fgets(), 내가 * wchar_t에로의 tmp를 필요로하는 대신 문자의 * . 유형 캐스팅이 작동하지 않는 것 같습니다. tmp의 선언을 으로 변경하려고 시도했습니다. wchar_t tmp [1024] = {0x0}; 하지만 tmp는 내 코드의 다른 곳에서 사용되는 strtok()의 매개 변수라는 것을 알았습니다. 여기에 내가 그 기능에 뭘하려 I :
//tmp is passed as the first parameter in parse()
void parse(wchar_t *record, char *delim, char arr[][MAXFLDSIZE], int *fldcnt)
{
if (*record != NULL)
{
char*p = strtok((char*)record, delim);
int fld = 0;
while (p) {
strcpy(arr[fld], p);
fld++;
p = strtok('\0', delim);
}
*fldcnt = fld;
}
else
{
fprintf(stderr, "string is null");
}
}
그러나 타입 캐스팅 중 하나가 작동하지 않습니다 strtok를에 *는 char.
지금 난 그냥에 UTF-16에서 파일을 변환하는 방법을 찾고 있어요 UTF-8은 너무 TMP는 나는 그것이 도움이 될 수있는 것처럼 보이지만 예제에 사용되는이 발견 * char 형이 될 수 있습니다 사용자가 UTF-16으로 입력 한 내용을 어떻게 파일에서 가져올 수 있습니까? http://www.cplusplus.com/reference/locale/codecvt/out/
감사합니다. 그럴 수있는 것처럼 들리네. :) "모든 유니 코드 재즈"를 다룰 수있게되기 시작할 수있는 곳을 아십니까? – user1420563
대부분의 표준 입출력 루틴에는 와이드 문자 버전이 있습니다. 예를 들어'fgetws '문서를 보라. 문제는 파일에 와이드 문자 인코딩이 있는지 미리 감지하거나 알 필요가 있습니다.ASCII 또는 UTF-8을 사용하는 것이 가장 좋습니다. 후자는 다국적 캐릭터를 포함하는 문자열을 ASCII가 아닌 많은 것으로 할 수있게 해줍니다. – Sneftel