string,print,{segmentation fault(core dumped)}

时间:2015-12-01 21:09:14

标签: c

我想知道如何引用字符串的特定字母 例如word[1]以及如何打印字符串。显然这是错误的:

#include<stdio.h>
int main(){
        char *word;
        printf("give us the word you want to play with\n");
        scanf("%s", word);
        printf("%s\n", word[1]);
        return 0;
}

3 个答案:

答案 0 :(得分:0)

word是一个未初始化的指针。你无法读入它所指向的记忆。您的代码有undefined behaviour

您需要分配内存,例如:

    char *word = malloc(256); //arbitrary number of bytes

或使用数组char word[256];

要打印字符串(C字符串是带有nul&#39; \ 0&#39;终结符的字节序列),您可以使用:

    printf("%s \n",word);

如果您只想打印一个字符,那么您需要使用正确的格式说明符来打印单个字符,即%c

    printf("%c \n",word[1]);

答案 1 :(得分:0)

word未初始化,并指向某个未知的地方。然后你写一个字符串到那个未知的地方。这不会很好。

相反,给word一些空间:

char word[100];

然后,要打印出特定字符,请printf()执行此操作。 %s打印一个字符串;字符使糟糕的字符串指针。

printf("%c \n", word[1]);

答案 2 :(得分:0)

Word是指向未知位置的指针,这将导致其填充随机值并导致seg错误。将此更改char *word修复为char *word = malloc(1024)您可以将1024更改为任何您认为合适的整数。您的下一个问题是您尝试使用%s打印字符,只需将其更改为%c,您就会变得更好。此外,您可能想要免费添加到最后,如果你想释放那段记忆。 以下是一些示例代码:

#include <stdlib.h>
#include <stdio.h>
int main(){
      char *word = malloc(256);
      printf("Enter a word:")
      scanf("%s",word);
      printf("%c",word[0]);
      free(word);
      return 0;
}