Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想用ASCII码更新我的C码_C - Fatal编程技术网

我想用ASCII码更新我的C码

我想用ASCII码更新我的C码,c,C,我有一个C代码,当我给它一个相反的句子时,它会把我的句子转换成通常的句子,但我的问题是当我使用像?或等等,我们的程序不起作用 输入示例:oD uoy tnaw ot eunitnoc 输出(我们想要):是否要继续 #include <stdio.h> #include <ctype.h> int main() { char sentence[100]; int ch, i, j, k; for (i=0; i<sizeof(sentenc

我有一个C代码,当我给它一个相反的句子时,它会把我的句子转换成通常的句子,但我的问题是当我使用像?或等等,我们的程序不起作用

输入示例:oD uoy tnaw ot eunitnoc

输出(我们想要):是否要继续

#include <stdio.h>
#include <ctype.h>

int main()
{
    char sentence[100];
    int ch, i, j, k;

    for (i=0; i<sizeof(sentence)-1; i++)
    if ((sentence[i] = getchar()) == '\n')
    break;

    sentence[i] = '\0';

    for (j = 0; j <i; j++)
    {
        if(islower(sentence[j])||isupper(sentence[j]))
        continue;
        for( k=j-1;sentence[k]!=' ' && k>=0;k--)
        {
            ch=sentence[k];
            putchar(ch);
        }
        ch=sentence[j];
        putchar(ch);
    }
    return 0;
}
输出显示:是否要?是否继续

你能帮我解决这个问题吗?我想我必须使用ASCII码来解决这个问题,但我不知道如何定义它们并解决这个问题

这是我的密码:

#include <stdio.h>
#include <ctype.h>

int main()
{
   char sentence[100];
   int ch, i, j, k;

   for (i=0; i<sizeof(sentence)-1; i++) 
   if ((sentence[i] = getchar()) == '\n') 
   break;

   sentence[i] = '\0';

   for (j = 0; j <=i; j++)
   {
           if(sentence[j]==' ' || sentence[j]=='\0')
           {
                   for( k=j-1;sentence[k]!=' ' && k>=0;k--)
                   {
                       ch=sentence[k];
                       putchar(ch);
                   }
                   printf(" ");  
           }

   }
   return 0;
}
#包括
#包括
int main()
{
char语句[100];
int ch,i,j,k;

对于(i=0;i问题是,您考虑用空格或NUL分隔的标记(一个单词)。但是标点符号不是单词的一部分。我认为实现您想要的简单方法是替换< /P>。
if(sentence[j]==' ' || sentence[j]=='\0')

该函数是在ctype.h中声明的,如果字符是字母,则返回true。这样,您可以反转字母块(单词),而不使用特殊字符

编辑:你的代码似乎有更多的问题。我修复了它们,并对其进行了测试,现在它似乎可以工作了

#include <stdio.h>
#include <ctype.h>

int main()
{
    char sentence[100];
    int ch, i, j, k;

    for (i=0; i<sizeof(sentence)-1; i++) 
        if ((sentence[i] = getchar()) == '\n') 
            break;

    sentence[i] = '\0';

    for (j = 0; j <=i; j++)
    {
       if(!isalpha(sentence[j]))
       {
           for(k=j-1; isalpha(sentence[k]) && k>=0; k--)
           {
               putchar(sentence[k]);
           }
           putchar(sentence[j]);  
       }
    }
    return 0;
}
#包括
#包括
int main()
{
char语句[100];
int ch,i,j,k;

对于(i=0;i您可以尝试以下代码

输入示例:oD uoy tnaw ot eunitnoc

输出:是否要继续

#include <stdio.h>
#include <ctype.h>

int main()
{
    char sentence[100];
    int ch, i, j, k;

    for (i=0; i<sizeof(sentence)-1; i++)
    if ((sentence[i] = getchar()) == '\n')
    break;

    sentence[i] = '\0';

    for (j = 0; j <i; j++)
    {
        if(islower(sentence[j])||isupper(sentence[j]))
        continue;
        for( k=j-1;sentence[k]!=' ' && k>=0;k--)
        {
            ch=sentence[k];
            putchar(ch);
        }
        ch=sentence[j];
        putchar(ch);
    }
    return 0;
}
#包括
#包括
int main()
{
char语句[100];
int ch,i,j,k;

对于(i=0;i你想得不对。你不需要ascii码来解决这个问题。你需要找到单词的开始、停止位置,并以相反的顺序包含它们之间的所有字符。就是这样。一个简单的基于数组的堆栈,顺便说一句,会使这个问题变得很简单,并且不需要在单个缓冲区中猛击整行。我还认为这对t来说非常方便他的问题。你的问题与ASCII或其他编码无关。你应该做的是在调试器中启动程序,逐行执行,同时注意所有变量,尤其是
j
k
句子[j]
句子[k]
。还有一个小提示:eunitnoc的反面是什么?
?它不是
继续?
。请不要使用“幻数”,因为这些将不适用于其他编码。此外,其他编码中的范围也可能不同。有,这将适用于任何编码,并且将更具描述性。我将其替换为if(!isalpha(句子[j]))但是它没有改变。对不起,我不擅长数组编程。你能给我最后的代码吗?谢谢兄弟。