簡體   English   中英

如何將文件中的每個字符存儲到 c 中的數組中

[英]How do I store each char from a file into an array in c

所以我想讀取一個文件,然后將字符串逐個字符存儲到一個 char 數組中。 我的輸入文件只是一個簡單的“Hello”。 我想將此字符串的字符存儲到一個字符數組中,所以

arr[0] = H
arr[1] = e
arr[2] = l
arr[3] = l
arr[4] = o

我的代碼如下,但不是存儲每個字符,而是存儲整個字符串

int main(void)
{
    FILE *ifp;
    ifp = fopen("inputfile.c","r");     
    int length = 20;
    char arr[length][50];           
    int i = 0;

    while(1)
    {
        char r = (char)fgetc(ifp);
        int k = 0;

        while(r != ',' && !feof(ifp))    
        {             
            arr[i][k++] = r;            
            r = (char)fgetc(ifp);
        }
        arr[i][k] = 0;  

        if(feof(ifp))
        {       
            break;
        }
        i++;
    }

    int j;

    for(j = 0; j <= i; j++)
    {
        printf("%s\n", arr[j] );
    }

    return 0;
}

我在這里得到的是arr[0] = "Hello"而不是arr[0] = Harr[1] = e等。

我能否就如何從文件中逐個字符而不是整個字符串存儲一些幫助?

正如 Barmar 已經指出的,它是一個二維數組。 你可能會做

for(j = 0; j <= i; j++)
{
    int wordlength = strlen(arr[j]);
    for (int h = 0; h < wordlength; h++)
    {
        printf("%c\n", arr[j][h] );
    }
}

編輯:你必須包含 string.h 。

字符串只是一個字符數組:

char exampleString[6] = "Hello";

printf( "%c\n", exampleString[0]); // Prints 'H'
printf( "%c\n", exampleString[1]); // Prints 'e'
printf( "%c\n", exampleString[2]); // Prints 'l'
printf( "%c\n", exampleString[3]); // Prints 'l'
printf( "%c\n", exampleString[4]); // Prints 'o'

實際上printf( "%c\n", exampleString[5]); 打印...什么都沒有,因為字符串的第 (length+1) 個字符是 null 字符 (0x00); 字符串終止符。

由於您定義了一個二維字符數組,因此每一行都是一個字符串。 由於您將所有字符存儲在索引 0 處(您永遠不會增加變量 i),因此arr[0]將完全包含字符串“Hello”。 為了訪問字符串的第一個字符,您可以打印arr[0][0] ,但我建議只聲明一個單維數組。 當然要確保數組能夠適應最大文件大小(dim=maxLen+1),否則您將在超空間中寫入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM