分配是获取输入字符串,并且不使用任何字符串库函数来处理该字符串。此刻此代码甚至无法打印出我输入的字符串。当我从main中删除函数时,它神奇地开始打印。任何帮助将不胜感激
#include <stdio.h>
#include <string.h>
#define SIZE 32
int isQuit(char str[]);
void isPalindrome(char str[]);
int main (){
int cont = 0;
char str[SIZE];
fflush(stdin);
printf("please enter a word:\n");
scanf("%s\n", str);
printf("%s\n", str);
while(cont == 0)
{
scanf("%s\n", str);
printf("%s\n", str);
cont = isQuit(str);
isPalindrome(str);
}
return 0;
}
答案 0 :(得分:1)
您很可能正遭受终端中行缓冲的困扰。在您编写换行符之前,不会显示任何写入的字符。
在显示输入内容时尝试添加换行符:
printf("%s\n", str);
您要确保显示的所有其他printf
呼叫也一样。
顺便说一句,您的零终止测试不正确。转义字符是\
,而不是/
。将循环更改为:
while (str[h] != '\0')
或者简单地:
while (str[h])
答案 1 :(得分:0)
这里的代码有些错误:
while(isQuit(str) == 0)
{
isPalindrome(str);
return 0 ;
}
由于循环主体中(无条件地)有return关键字,因此循环最多执行一次。
此外,isQuit
和isPalindrome
都不接受用户的输入。这意味着,即使您通过删除return
语句来修复循环,它的 still 也不正确;您会遇到isQuit
和isPalindrome
的无限循环,并传递了第15行用户要求的相同str
。
除了@paddy的答案中指出的问题之外,您需要做的是更改while
循环以不断轮询用户以进行输入并采取行动。