由于某种原因,我在行后得到了理解:
currentString[i] = *currentChar;
此代码用于从文件中收集所有字符,直到遇到字符';',然后将它们放入字符串中。 有人知道这是怎么回事吗?谢谢! 这是所有代码:
char currentString[100] = { 0 };
char *currentChar;
//opening the input file
FILE *input = fopen("input.txt", "r");
//if the file doesn't exist, the pointer will contain NULL
if (input == NULL)
{
exit(1);
}
//assigning the start of the input file adress to currentChar
currentChar = input;
//while the current character isn't the last character of the input file
while (currentChar < input + strlen(input) + 1)
{
while (currentChar != ';')
{
currentString[i] = *currentChar;
printf("%c", *currentChar);
currentChar = currentChar + 1*sizeof(char);
i++;
}
}
答案 0 :(得分:3)
input
是指向不透明FILE
类型的指针,而不是您似乎假定的指向文件内容的指针。这意味着您不能直接通过指针访问文件的内容。相反,您需要将input
传递给从文件读取输入的函数,例如fgets
,getc
和fscanf
。
答案 1 :(得分:1)
您根本没有从文件中读取文件。这个:
currentChar = input;
将FILE
指向的input
对象的地址分配给currentChar
。这也是类型不匹配,因为您正在将FILE *
分配给char *
。您也不能在strlen
上使用input
,因为它不是char *
。您应该已经收到很多关于这些的编译器警告。
要从文件中读取字符,请使用fgetc
函数:
int currentChar = fgetc(input);
//while the current character isn't the last character of the input file or a ';'
while (currentChar != EOF && currentChar != ';')
currentString[i] = currentChar;
printf("%c", currentChar);
currentChar = fgetc(input);
i++;
}