-1

テキストをファイルから別のファイルにコピーするこのプログラムを作成しました。その結果、元のファイルの内容は「これはテストです」新しいファイルの内容は「これはテストです」というものでした。私が欲しかった結果、元のファイルの内容「これはテストです」新しいファイルの内容、

"T
h
i
s

i
s

a

t
e
s
t"

何らかの理由で出力が斜めになってめちゃくちゃになっています。空白文字がめちゃくちゃになっているためだとほぼ確信しているので、空白をチェックして、空白に遭遇したときに次の行に移動しないようにしました。

#include <stdio.h>

int main(void){
    FILE *fp = fopen("originalfile.txt", "r");
    char buffer[81];
    fgets(buffer, 81, fp);
    fclose(fp);

    //copies the file
    /*
       FILE *fp2 = fopen("newfile.txt", "w");
       fputs(buffer, fp2);
       fclose(fp2);
     */

    //copies but moves to next line after each character
    FILE *fp2 = fopen("newfile.txt", "w");
    int x;
    char z = '\n';
    int a = z;
    printf("%d", z);
    for (x = 0; x < strlen(buffer); x++){
        fputc(buffer[x], fp2);
        int res = fgetc(fp2);
        if(isspace(res) != 0){
            fseek(fp2,81,SEEK_CUR);
        } else {
            printf("yeh it got here");
        }
    }
}
4

2 に答える 2

1

以下のように for ループを更新して、各文字を新しい行に配置できます。

for (x = 0; x < strlen(buffer); x++){
    fputc(buffer[x], fp2);
    fputc('\n', fp2);
}
于 2013-04-20T05:18:09.690 に答える