我想知道如何引用字符串的特定字母
例如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;
}
答案 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;
}