0

我需要读取一个包含我的名字的 txt 文件,然后创建一个包含我的名字但拼写向后的新 txt 文件,即(John Doe 变为 Doe,John)。我的作业说我可能需要创建一个临时数组来存储更改的 txt。

我收到警告:内置函数“strchr”错误的隐式声明不兼容。我会将它包含在代码中,这样您就可以确切地看到我收到此警告的位置。

这是我的代码,我觉得好像很接近。我在这里做错了什么?请帮帮我。

#include <stdio.h>

int main (void)
{
FILE* txtFile=NULL;

txtFile=fopen("myName.txt", "r");

char myName [50]={'\0'};



if(txtFile==NULL)
{
    printf("Failed to open file\n");
}
else
{
    fgets(myName, sizeof(myName), txtFile);

    printf("%s\n", myName);
}

FILE* newTxtFile=NULL;

newTxtFile=fopen("myNewName.txt", "w+");

char newName[50]={'\0'};


if(newTxtFile==NULL)
{
    printf("Failed to open file\n");
}
else
{   
fgets(newName, sizeof(newName), newTxtFile);

fprintf(txtFile, "%s", newName);

rewind(newTxtFile);
//
char * space;
char *first=NULL;
char *last = NULL;
char *firstspace;
char *name=NULL;

name = myName;
//incompatible implicit declaration of built-in function 'strchr'
firstspace=space=strchr(name,' ');

*firstspace='\0';

while (space!=NULL)
{
    last = space+1;
    space=strchr(space+1,' ');
}

printf("%s %s", last, name);

*firstspace=' ';
//
printf("text: %s \n", newName);
}
fclose(txtFile);

return 0;
}   
4

2 回答 2

1

首先,您需要

您处理输出文件的方式有点奇怪。

您应该打开它进行输出(“w”);

删除这 3 行:

fgets(newName, sizeof(newName), newTxtFile);

fprintf(txtFile, "%s", newName);

rewind(newTxtFile);

然后添加一行以将输出打印到屏幕上打印位置旁边的新文件:

fprintf(newTxtFile, "%s, %s", last, name); 

最后,在开始时,添加

#include <string.h>

得到原型strchr

应该这样做!

于 2013-10-18T15:30:34.147 回答
1

您的代码中有很多无用的垃圾。

您的新文件一无所有的原因是因为您在以前的文件中再次写入新数据

看看这里:

fprintf(txtFile, "%s", newName);



#include <stdio.h>
#include <string.h>

int main (void)
{
FILE* txtFile=NULL;

txtFile=fopen("helloWorld.txt", "r");

char myName [50]={'\0'};



if(txtFile==NULL)
{
    printf("Failed to open file\n");
}
else
{
    fgets(myName, sizeof(myName), txtFile);

    printf("%s\n", myName);
}

FILE* newTxtFile=NULL;

newTxtFile=fopen("myNewName.txt", "w+");

char newName[200]={'\0'};


if(newTxtFile==NULL)
{
    printf("Failed to open file\n");
}
else
{
fgets(newName, sizeof(newName), newTxtFile);


rewind(newTxtFile);
//
char * space;
char *first=NULL;
char *last = NULL;
char *firstspace;
char *name=NULL;

name = myName;
//incompatible implicit declaration of built-in function 'strchr'
firstspace=space=strchr(name,' ');

*firstspace='\0';

while (space!=NULL)
{
    last = space+1;
    space=strchr(space+1,' ');
}

printf("%s %s", last, name);
/* my changes start here*/
strcat(newName,last);


strcat(newName," ");


strcat(newName,name);

printf("%s", newName);

fprintf(newTxtFile, "%s", newName);






}
fclose(txtFile);
fclose(newTxtFile);

return 0;
}
于 2013-10-18T15:33:16.693 回答