안녕하세요.이 오류가 발생하며 이유가 확실하지 않습니다. 나는 C에 꽤 익숙해있어서 잘만되면 너무 복잡하지 않을 것이다.오류 LNK2019 : 확인되지 않은 외부 기호
을 heres 내 주요
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "binToDec.c"
#include "verifyMIPS.c"
int binToDec(char string[], int begin, int end);
int verifyMIPS (char string[]);
int main(int argc, char *argv[])
{
char buffer[BUFSIZ];
FILE* fptr; /* file pointer */
int lineNum = 0;
int i;
char *count;
/* Was a file passed in a parameter (e.g., on the command line)? */
if (argc == 2)
{
/* Open the file for reading */
if ((fptr = fopen (argv[1], "r")) == NULL)
{
fprintf (stderr, "Error: Cannot open file %s.\n", argv[1]);
return 1;
}
}
else /* No file passed in; use standard input. */
fptr = stdin;
/* Continuously read next line of input until EOF is encountered.
* Each line should contain only 32 characters and newline.
*/
while (fgets (buffer, BUFSIZ, fptr)) /* fgets returns NULL if EOF */
{
lineNum++;
if (strlen (buffer) == 33 && buffer[32] == '\n')
buffer[32] = '\0'; /* convert newline to null byte */
else
{
(void) fprintf (stderr,
"Error: line %d does not have 32 chars.\n", lineNum);
continue; /* error: get next line */
}
/* Verify that the string is 32 0's and 1's. If it is, do
* various tests to ensure that binToDec works correctly.
* If the string contains invalid characters, print an error
* message.
*/
/* CODE MISSING !!! */
int i;
for(i=0; i<33; i++)
{
if(verifyMIPS(buffer[i])==1)
{
binToDec(buffer[i],0,32);
}
else
{
(void) fprintf (stderr,
"Error: line %d does not have 32 chars.\n", lineNum);
continue; /* error: get next line */
}
}
}
/* End-of-file encountered; close the file. */
fclose (fptr);
return 0;
}
지금 내 두 개의 다른 파일
#include <string.h>
int verifyMIPSInstruction (char * instr)
/* returns 1 if instr contains 32 characters representing binary
* digits ('0' and '1'); 0 otherwise
*/
{
int i;
for(i = 0; i<32; i++)
{
if(instr[i] == '1' || instr[i] == '0')
{
return 1;
}
}
if(instr[32] != '\0')
{
(void) printf("is not an instruction");
}
return 0;
}
및
int binToDec(char string[], int begin, int end)
{
int i, remainder;
int j = 1;
int decimal = 0;
i = atoi(string);
while(i !=0)
{
remainder = i%10;
decimal = decimal+remainder*j;
j=j*2;
i = i/10;
}
printf("equivalent decimal value: %i", decimal);
return decimal;
}
는 내가 갖는 출력은 오류 LNK2019입니다 : 확인되지 않은 외부 기호 _verifyMIPS 함수 _main에서 참조 됨
나는 또한이 모든 것을 위해 Microsoft Visual Studios 개발자 명령 프롬프트를 사용하고 있습니다. 도움 주셔서 감사합니다.
편집 : 새로운 문제, 코드를 실행할 때 32 문자를 넣으면 verifyMIPSInstructions 또는 binToDec가 실행되지 않습니다. 그것은 분명히 나에게 32 문자가 없다는 오류만을 줄 것이다. 어떤 충고?
대부분의 사람들은 대부분 C 소스 파일을'#include '하지 않습니다. 일반적으로 소스 코드가 아니라 헤더를 포함합니다. –
한 가지 가능성은 CRLF 줄 끝이 있고 그 파일이 바이너리 모드로 처리되고 있으므로''\ n ''앞에''\ r ''이 있기 때문에 줄이 더 길어진 것처럼 보입니다. 나는 그것이 문제가되어야한다고 생각하지 않는다. fopen()에서' "rb"'를 지정하지는 않지만'stdin'에 영향을 줄 수 있습니다. 그러나 올바른 길이를 얻지 못한다면 진단 결과는 (a) 길이를보고해야하며, (b) 입력 된 각 문자를 16 진수 (' "% 3x"')로 인쇄해야합니다. '% c'를 사용하여 컴퓨터가 가지고있는 생각을 볼 수 있고 생각했던 것과 그것을 비교할 수 있습니다. –