如何解决在C中逐行读取txt文件
我正在尝试从txt文件中撤回字符串。
文件内容为;
- 苹果
- 梨
- 橙色
基本上每一行都有一个单词,我想阅读每一行并将单词缩进字符串char* word[25]
中,因为较长的单词为24个字符。当我实现一个简单的代码以读取每行之间ASCII中的每个字符时,行尾有一个值10
。因此,我创建了一个没有任何条件的for
循环,并添加了if
条件以发现行(LF)的10
值结尾。但这是行不通的,我敢肯定我搞砸了一些非常基本的代码或逻辑。抱歉,如果我的代码看起来不合逻辑或非常错误,那么我是新手。另外,如果可以完成此步骤,我将使用很多库添加cos。 TIA
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc,char *argv[])
{
if (argc < 2)
{
printf("Usage: ./word filename\n");
return 1;
}
FILE* ptr = fopen(argv[1],"r");
char ch;
char* word[45];
for (int i = 0; ;i++)
{
ch = fgetc(ptr);
word[i] = &ch;
if (ch == 10)
{
break;
}
}
printf("%s\n",*word);
return 0;
}
终端输出
~/snippets/ $ make word
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow word.c -lcrypt -lcs50 -lm -o word
~/snippets/ $ ./word lec3.txt
`
~/snippets/ $
解决方法
如果放下指针怎么办..
char ch;
char word[45];
for (int i = 0; ;i++)
{
ch = fgetc(ptr);
word[i] = ch;
if (ch == 10)
{
break;
}
}
printf("%s\n",word);
,
您也可以动态地进行操作:
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv)
{
if (argc < 2)
{
printf("Usage: ./word filename\n");
return 1;
}
FILE *ptr = fopen(argv[1],"r");
char ch;
int i = 0;
char *word = calloc(45,sizeof(char));
for (ch = fgetc(ptr); ch != EOF; ch = fgetc(ptr),i++)
{
if (ch == '\n')
break;
word[i] = ch;
}
printf("%s\n",word);
free(word);
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。