你从新写吧 找个好的方法在写
现在程序的错误有很多 已开始根本建立不了文件 等把r改成a+的时候 根本不能往文件里写入东西
我对文件这个了解很少 只能勉强帮你
还有啊 你在吧题目说清除 到底要实现什么功能 我看你那题目都看不懂
----------------解决方案--------------------------------------------------------
我按照题目要求写了一个,我对题目要求作了一点更改,要是两个文件之一存在输入的字符串,则只打印是否是回文的信息,而不再把字符串写入文件。
你可以参考一下我的代码,有什么错误或者不足请指出
[CODE]/* isPalindrome.c -- 判断一个字符串是否是回文,并作相应文件操作
* Author: Space
* Date: 2007/07/07
* Version: 1.0
*/
#include <stdio.h>
#include <string.h>
#define IS_HUIWEN "yeshuiwen.txt"
#define ISNOT_HUIWEN "nohuiwen.txt"
#define BUFSIZE 1024
#define TRUE 1
#define FALSE 0
int isPalindrome(const char *str);
int main(void)
{
FILE *pf = NULL;
char input[BUFSIZE] = "\0";
char strInFile[BUFSIZE] = "\0";
int found = FALSE;
int inHWFile = FALSE;
int inNotHWFile = FALSE;
printf("Please enter a string:\n");
fgets(input, BUFSIZE, stdin);
if ((pf = fopen(IS_HUIWEN, "r")) == NULL)
{
printf("Open file %s failed!\n", IS_HUIWEN);
exit(-1);
}
while (fgets(strInFile, BUFSIZE, pf) != NULL)
{
if (strcmp(input, strInFile) == 0)
{
found = TRUE;
inHWFile = TRUE;
break;
}
}
fclose(pf);
if (! found)
{
if ((pf = fopen(ISNOT_HUIWEN, "r")) == NULL)
{
printf("Open file %s failed!\n", ISNOT_HUIWEN);
exit(-1);
}
while (fgets(strInFile, BUFSIZE, pf) != NULL)
{
if (strcmp(input, strInFile) == 0)
{
found = TRUE;
inNotHWFile = TRUE;
break;
}
}
fclose(pf);
}
if (found)
{
if (inNotHWFile)
printf("The string you entered is not a palindrome string.\n");
else if (inHWFile)
printf("The string you entered is a palindrome string.\n");
}
else
{
if (isPalindrome(input))
{
printf("The string you entered is a palindrome string.\n");
if ((pf = fopen(IS_HUIWEN, "a")) == NULL)
{
printf("Open file %s failed!\n", IS_HUIWEN);
exit(-1);
}
fputs(input, pf);
fclose(pf);
}
else
{
printf("The string you entered is not a palindrome string.\n");
if ((pf = fopen(ISNOT_HUIWEN, "a")) == NULL)
{
printf("Open file %s failed!\n", ISNOT_HUIWEN);
exit(-1);
}
fputs(input, pf);
fclose(pf);
}
}
return 0;
}
int isPalindrome(const char *str)
{
int i = 0;
int len = strlen(str) - 1;
while (i++ < len / 2 + 1)
{
if (str[i] != str[len - i - 1])
return FALSE;
}
return TRUE;
}
[/CODE]
----------------解决方案--------------------------------------------------------
指出你代码的一个小错误
fopen()的时候用“a“模式,这样是在文件内容后面追加要写入的信息,如果用”w“模式的话则是删除文件已存在的信息然后再写入
----------------解决方案--------------------------------------------------------
在我机子上可以正常运行
----------------解决方案--------------------------------------------------------
谢谢大家了~
----------------解决方案--------------------------------------------------------