当前位置: 代码迷 >> C语言 >> [求助字符串的程序
  详细解决方案

[求助字符串的程序

热度:166   发布时间:2007-07-07 22:47:27.0

你从新写吧 找个好的方法在写

现在程序的错误有很多 已开始根本建立不了文件 等把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“模式的话则是删除文件已存在的信息然后再写入


----------------解决方案--------------------------------------------------------
在我机子上可以正常运行
----------------解决方案--------------------------------------------------------

谢谢大家了~


----------------解决方案--------------------------------------------------------
  相关解决方案