将.txt文件字符串添加到c中的数组中的各个位置

时间:2014-10-11 20:49:47

标签: c arrays string file io

我一直在寻找,但无法弄清楚我的问题。我想要做的是读取.txt文件,其中包含以逗号分隔的关键字。然后我想将每个单独的关键字添加到自己的索引中,以便稍后能够访问数组。

我能够按原样打印.txt文件,但我无法弄清楚如何将每个单词的整个字符串添加到数组中而不是单个字符。此数组将用于搜索另一个.txt文件以查找这些关键字。所以澄清一下:

读入的

.txt文件:

c, c++, java, source,

现在阵列的样子

f[0]c
f[1],
f[2]c
f[3]+
f[4]+
f[5],
f[6]j
f[7]a
f[8]v
f[9]a
etc

我想要完成的事情:

f[0] = c
f[1] = c++
f[2] = java
f[3] = source
etc

这是一项任务,我无法以我想要的方式完成任务。我很想知道我需要开始研究什么,因为我认为这比我目前的课堂水平要高一些。下面是我将.txt文件打印到数组中的代码。任何信息都很棒。我还没有学过内存分配或其他任何内容,这主要是为了了解FILE I / O和搜索功能。再次感谢!

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#define pause system("pause")
#define cls system("cls")
#include <string.h>


main(){
FILE* pFile;
char f[50] = {""};
int i = 0;

pFile = fopen("a:\\newA.txt", "r");
if (!pFile) {
    perror("Error");
}

    fread(f, sizeof(char), 50, pFile);
    printf("%s\n", f);

pause;


}

2 个答案:

答案 0 :(得分:1)

char f[50] = {""};

此行表示您构建一个包含50个字符的空数组。每个f [i]将包含1个且仅包含1个字符。 我给你这个代码可以打印你想要的东西,但不确定它是否是你被要求做的......

main(){
FILE* pFile;
char f[50] = {""};
int i = 0;

pFile = fopen("a:\\newA.txt", "r");
if (!pFile) {
    perror("Error");
}

fread(f, sizeof(char), 50, pFile);
for(int j = 0; j<50; j++) {
    if(f[j] == ',') {
        printf("\n");
    } else { 
        printf("%c", f[j]);
    }
}
pause;

}

这将打印您的单词,由&#39;分隔,...但您的数组将保持不变!

答案 1 :(得分:0)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *getWord(FILE *fp, const char *delimiter){
    char word[64];
    int ch, i=0;

    while(EOF!=(ch=fgetc(fp)) && strchr(delimiter, ch))
        ;//skip
    if(ch == EOF)
        return NULL;
    do{
        word[i++] = ch;
    }while(EOF!=(ch=fgetc(fp)) && !strchr(delimiter, ch));

    word[i]='\0';
    return strdup(word);
}

int main(void) {
    char *word, *f[25];
    int i, n = 0;
    FILE *pFile = fopen("a:\\newA.txt", "r");

    while(word = getWord(pFile, ", \n")){
        f[n++] = word;
    }
    fclose(pFile);

    for(i=0; i<n; ++i){
        puts(f[i]);
        //free(f[i]);
    }
    return 0;
}