在c中反转一个单词

时间:2012-10-17 16:53:01

标签: c string

这肯定很简单,但我是C的新手,我不明白为什么下面的代码是错误的。代码是字符串的简单恢复字符位置:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{   int i,length;
    char *word;
    scanf("%s",word);
    length = strlen(word);
    char res[length];

    for(i=0;i<length;i++){
        res[i]=word[length-1-i];
        printf("%d",res[i]);}
}

当我输入一个字符串时,我在控制台和调试器中收到一条消息:(lldb):movb%al,(%rcx),EXC_BAD_ACCESS(code = 1,address = 0x0)

2 个答案:

答案 0 :(得分:5)

char *word;
scanf("%s",word);

对不存在的内存位置的写入无效。

创建一个如下数组:char word[MAXSIZE]或使用malloccalloc动态分配内存。并使用fgets而不是scanf

一些链接让您以愉快的方式:  malloccallocfgets

答案 1 :(得分:1)

printf("%d",res[i]);

如果您想输出字符而不是字节值,请使用%c代替%d