我的代码如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE *fp = fopen("text.txt", "r");
char c;
int d = 0;
char arr[2000];
do {
c = fgetc(fp);
d = d + 1;
if (c == '\n') {
arr[d] = ' ';
} else
arr[d] = c;
} while (c != EOF);
int z = strlen(arr);
arr[0]= '\0';
for (int i = 0;i < z; i++) {
arr[i] = arr[i +1];
}
fclose(fp);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
代码从文本文件中读取一个字符串,然后将它们转换为数组arr [2000](文本文件中有很多单词).我想询问是否有人知道代码读取文本文件的方法,每个单词由空格而不是字符分隔.
所以例如,如果我有一个带字符串的数组arr:"杰克是个男孩"
arr [0]等于"杰克"而不是"J"
ps(最后删除索引0的for循环的原因是因为我不断得到一个"("字符在数组的开头)
任何帮助将非常感激.
你说:
所以例如,如果我有一个带字符串的数组arr:
"Jack is a boy"
arr[0]就等于"Jack"不"J"
要做到这一点,arr[0]需要是一个指向空终止字符串的指针.这意味着,arr必须是一个指针数组,而不是一个chars 数组.
char* arr[SOME_SIZE] = {0}; // Make SOME_SIZE large enough for your needs.
Run Code Online (Sandbox Code Playgroud)
现在你必须找出存储从文件中读取的字符的位置.您可以使用最简单方式使用的方法在C中获取文件内容以读取文件的全部内容.假设你有代码来读取文件的内容,那么你有:
char* fileContents = readFileContents("text.txt");
Run Code Online (Sandbox Code Playgroud)
而现在,fileContents指向一个看起来像这样的数组:
+---+---+---+---+---+---+---+---+---+---+---+---+---+----+
| J | a | c | k | | i | s | | a | | b | o | y | \0 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+----+
Run Code Online (Sandbox Code Playgroud)
现在,您需要遍历该数组并确保:
arr[0]- arr[3]指向数组中的正确位置.arr[0]- arr[3]指向以空字符结尾的字符串.arr[0] arr[1] arr[2] arr[3]
| | | |
v v v v
+---+---+---+---+----+---+---+----+---+----+---+---+---+----+
| J | a | c | k | \0 | i | s | \0 | a | \0 | b | o | y | \0 |
+---+---+---+---+----+---+---+----+---+-- -+---+---+---+----+
Run Code Online (Sandbox Code Playgroud)
我希望能为您提供足够的信息来实现您所需的功能.
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |