[英]Read txt file from standard input and store whole text into char array
让我描述一下我正在尝试做的事情。
编译源代码并使用输入文本文件运行
gcc main.c -o main
./main < 文本.txt
然后'text.txt'中的文本应该存储到一个变量中。 我不确定,但我认为这应该是 char 数组。
最终,我想循环遍历 'text.txt' 的每个字符及其索引; 在 python 它应该如下所示
i = 0
while i < len(string):
print(string[i])
if (~~~):
i -= 10(or some other numbers)
else:
i += 1
需要考虑的几点
我怎样才能在 C 中写这个?
以下是我在 C 中的尝试,但没有奏效。
int main(){
char A;
short i;
scanf("%s", A);
printf("%s", A);
for (i=0; i < strlen(A); i++) {
printf("%c", A[i]);
}
return 0;
}
您可以通过多种方式进行操作,让我们从获得适当长度的文件开始。
FILE *f = fopen("textfile.txt", "rb");
fseek(f, 0, SEEK_END); // goes to the end of file
long fsize = ftell(f); // tells what position in bytes is
fclose (f)
f = fopen("textfile.txt", "r");
您注意到我正在使用rb
或读取二进制文件。 那是因为要克服这样一个事实,即如果您在非二进制模式下使用fseek()
和ftell()
,您将陷入未定义的行为,结果可能在 Windows 机器和 (*)nix 机器之间有所不同。
现在如何将文本文件读入字符串。 有多种方式
getc()
fscanf()
也不是首选,比getc()
更好,因为它可以同时读取多个字节fgets()
您可以指定您读取的文件的大小,从而避免缓冲区溢出。以上是快速而肮脏的阅读方式,不知道你的 DE 是什么样的(什么操作系统、编译器等)我可以 go 更详细地了解如何做到这一点,但 tnx 到 @Nail 这里是一篇文章,你可以阅读。 您可以使用它并为不同的操作系统设置标志,而不是使用我的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.