-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 回答
0

Rohan 的解决方案有效。我已经在我的机器上测试过了,试试这个:

#include <stdio.h>
#include<string.h>
int main(void){
    FILE *fp = fopen("originalfile.txt", "r");
    char buffer[81];
    fgets(buffer, 81, fp);
    fclose(fp);

    FILE *fp2 = fopen("newfile.txt", "w");
    int x;
    for (x = 0; x < strlen(buffer); x++){
        fputc(buffer[x], fp2);
        fputc('\n', fp2);
    }
    return 0;
}
于 2013-04-20T05:47:07.580 回答