我制作了这个程序,将文本从文件复制到另一个文件。 结果是,原始文件内容“这是一个测试” 新文件内容“这是一个测试” 哪个有效,然后我评论了那个部分,并尝试使输出看起来像这样。 我想要的结果,原始文件内容“这是一个测试” 新文件内容,
"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");
}
}
}
答案 0 :(得分:1)
您可以按如下所示更新循环,将每个字符放在新行上:
for (x = 0; x < strlen(buffer); x++){
fputc(buffer[x], fp2);
fputc('\n', fp2);
}
答案 1 :(得分:0)
罗汉的解决方案有效。我在我的机器上测试了它,试试这个:
#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;
}