Code Bye

将一个字符串数组打印到文件中,换行符不起作用

# include <stdio.h>
# include <stdlib.h>
# define ROW 20
# define COL 30
# define LEVELS 10
void init (char array[][COL], char ch);
void makepic (int picin[][COL], char picout[][COL], int row);
const char trans[LEVELS + 1] = " ."":~*=&%#";
int main (void)
{
	int PicIn[ROW][COL];
	FILE * fp;
	FILE * fpw;
	int row, col;
	char PicOut[ROW][COL];
	init (PicOut, ""s"");

	if ((fp = fopen ("good.txt", "r")) == NULL)
	{
		printf ("bullshit.\n");
		exit (1);
	}
	for (row = 0; row < ROW; row++)
		for (col = 0; col < COL ; col++)
			fscanf (fp, "%d", &PicIn[row][col]);
	if (ferror (fp) != 0)
	{
		printf ("bo.\n");
		exit (3);
	}
	makepic (PicIn, PicOut, ROW);
	for (row = 0; row < ROW; row++)
	{
		for (col = 0; col < COL; col++)
			printf ("%c", PicOut[row][col]);
		putchar (""\n"");
	}
	fclose (fp);
	if ((fpw = fopen ("fun.txt", "w")) == NULL)
	{
		printf ("nd.\n");
		exit (3);
	}
	for (row = 0; row < ROW; row++)
	{
		for (col = 0; col < COL ; col++)
			fprintf (fpw, "%c", PicOut[row][col]);
		putchar (""\n"");             //这里明明有打印了换行符,为什么在fun文件中还是没有换行?
	}

}
void init (char array[][COL], char ch)
{
	int row, col;
	for (row = 0; row < ROW; row++)
		for (col = 0; col < COL; col++)
			array[row][col] = ch;
	return ;
}
void makepic (int picin[][COL], char picout[][COL], int row)
{
	int rows, cols;
	for (rows = 0; rows < row; rows++)
		for (cols = 0; cols < COL; cols++)
			picout[rows][cols] = trans[picin[rows][cols]];
	return ;
}
解决方案:20分
函数名: putchar

定义:该函数将制定的表达式的值所对应的字符输出到标准输出终端上。表达式可以是字符型或整型,它每次只能输出一个字符。例如:putchar(“”#””);

putchar是将字符串输出到终端,而不是文本。
假如输出到文本,需要fputs();
函数名: fputs

功 能:向指定的文件写入一个字符串(不自动写入字符串结束标记符‘\0’)。成功写入一个字符串后,文件的位置指针会自动后移,函数返回值为0;否则返回EOF(符号常量,其值为-1)。

应该用 fputs(“\r\n”,fpw);


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明将一个字符串数组打印到文件中,换行符不起作用