0

我正在尝试做三件事:

  1. 加载 .txt 文件
  2. 将文件的内容打印到控制台。
  3. 用另一个名称再次保存它。
#include <stdio.h>
#include <stdlib.h>


int main(int argc, char** argv) {

char text[500]; /* Create a character array that will store all of the text in the file */
char line[100]; /* Create a character array to store each line individually */

 int  inpChar; 

FILE *file; /* Create a pointer to the file which will be loaded, to allow access to it */
char fileName[100]; /* Create a character array to store the name of the file the user want to load */


do {
printf("enter menu: [l]oad - [s]ave - [p]rint\n");
scanf("%c", &inpChar);
    } 
    while((inpChar != 'l') && (inpChar != 's') && (inpChar !="p"));

if((inpChar == 'l'))
{
 printf("Enter the name of the file containing ship information: ");
}
scanf("%s", fileName);

/*Try to open the file specified by the user. Use error handling if file cannot be found*/
file = fopen(fileName, "r"); /* Open the file specified by the user in 'read' mode*/
if(file == NULL){
    printf("The following error occurred.\n");
}
else {
    printf("File loaded. \n"); /* Display a message to let the user know 

                          * that the file has been loaded properly */

}

 do {
printf("enter menu: [l]oad - [s]ave - [p]rint\n");
scanf("%c", &inpChar);
    } 


while((inpChar != 'l') && (inpChar != 's') && (inpChar !='p'));
if((inpChar == 'p'))
{
file = fopen(fileName, "r");
fprintf(file, "%s", line);
fclose(file);

}

return 0;
}

我缺少控制台面板上的打印文本;它不起作用,并且代码中缺少保存选项。我该怎么办?

4

2 回答 2

0

问题在第 10 行:

int inpChar;

应该

char  inpChar;

第 23 行的错误:

while((inpChar != 'l') && (inpChar != 's') && (inpChar !="p"));

应该

'p'



您必须将文件读入数组。如果文件不超过 10000 个字符,这是一种原始方法。

char all[10000];
fread (all ,1,9999,file);
printf("%s", all);

读取文件的更好方法是使用fgets逐行读取。

于 2013-02-14T12:10:48.750 回答
0

以下是没有意义的:

file = fopen(fileName, "r");
fprintf(file, "%s", line);

如果您打开一个文件进行读取,您为什么要尝试写入它?您想从文件 ( man fgets) 中读取,然后写入标准输出。

于 2013-02-14T12:11:07.147 回答