2017-02-27 47 views
1
#include <stdio.h> 

int main() 
{ 
    FILE *fp; 
    int c; 
    int n = 0; 
    char array[10][10]; 
    int i=0,j=0; 
    fp = fopen("g.txt","r"); 
    if(fp == NULL) 
    { 
     perror("Error in opening file"); 
     return(-1); 
    } 
    do 
    { 
     c = fgetc(fp); 
     if(feof(fp)) 
     { 
     break ; 
     } 
    if(c=='\n'){ 
    array[i][j]=c; 
    i++; 
    j=0; 
    } 
    j++; 

    }while(1); 

    fclose(fp); 
    for(i=0;i<10;i++){ 
    for(j=0;j<10;j++){ 
     printf("%c ",array[i][j]);} 
    printf("\n"); } 

    return(0); 
} 

您好,我想從一個文本文件中的矩陣(字符矩陣明確,並希望在動態數組存儲(我知道這是不是在我的例子動態的,但因爲我知道我只是嘗試在確定的矩陣中)但是我的代碼不能正常工作讀取和存儲來自文本文件的非確定的矩陣

我想將矩陣中的所有字符都放到我的數組中,並確定字符是否是\ n然後在下一個循環進入下一行,初始化列爲零

理論上它應該似乎工作,但它會打印一堆無意義的符號,似乎不能正常工作。 哪些部件可能會誤認?

編輯我的文本文件來測試:

Hello, I am trying to get a matrix from a text file(character matrix specifically and wants to store in dynamic ar 
ray(I know it is not dynamic in 
my example but for know i just try to do in determined matrix) . But my code doesn't work as it should. 

它完全犯規打印正確。像sho打印出來但「ul」沒有。 d並非在新行(Linux終端)

如何打印出= http://imgur.com/a/7WYgs

+0

如果字符不是'\ n',你似乎沒有在數組中設置任何東西。 –

回答

0

您可能需要更改此部分:

if(c=='\n'){ 
    array[i][j] = c; 
    i++; 
    j = 0; 
} 

if(c=='\n'){ 
    i++; 
    j = 0; 
} else { 
    array[i][j] = c; 
    j++; 
} 

這意味着,如果該字符是新行,則移至下一行,否則將其保存在數組中。

+0

啊我的錯誤是我很快修復,但事情是甚至這個工程大部分它不打印一些字(特別是結束字母)我有這樣的文本文件 「你好,我想從文本中獲得矩陣文件(字符矩陣專門,並希望存儲在動態AR 射線(我知道它不是動態的,在我的例子中是 ,但知道我只是試圖在確定的矩陣中做)但我的代碼不工作,因爲它應該。 「 它打印出」笑「,然後打印出來的字母是」d「它不打印出」ul「。同樣也用於句子 – paypaytr

+0

你可以添加文本文件樣本到你的問題 –

+0

我添加了我的文本文件和它如何打印出我的第一篇文章。 – paypaytr

0

當您遇到換行符時,您只能在數組中存儲某些內容。

我會循環改寫爲

while ((c = fgetc(fp)) != EOF) 
{ 
    if(c!='\n'){ 
    array[i][j]=c; 
    j++; 
    } 
    else 
    { 
     i++; 
     j = 0; 
    } 
} 

龜etc上FEOF返回EOF()和ferror(),所以你不會有一個無限循環,如果有一個硬盤的問題。

+0

謝謝我解決了這些問題。 – paypaytr