我需要读取包含我的名字的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;
}
答案 0 :(得分:1)
首先,您需要
处理输出文件的方式有点奇怪。
你应该打开输出(“w”);
删除这3行:
fgets(newName, sizeof(newName), newTxtFile);
fprintf(txtFile, "%s", newName);
rewind(newTxtFile);
然后添加一行以将输出打印到您在屏幕上打印的位置旁边的新文件:
fprintf(newTxtFile, "%s, %s", last, name);
最后,在开始时,添加
#include <string.h>
获取strchr
的原型。
应该这样做!
答案 1 :(得分: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;
}