C中带字符串的Malloc

C中带字符串的Malloc,c,string,malloc,C,String,Malloc,当我键入想要查找的字符位置时,这些代码停止工作,另外,我需要使用str作为指针和malloc来重新生成它 int main(void) { char str[10]; int pos; puts("Type a text"); gets(str); puts("Type a position"); scanf("%d", pos); pos = pos - 1; printf("%s", str[pos]); sy

当我键入想要查找的字符位置时,这些代码停止工作,另外,我需要使用str作为指针和malloc来重新生成它

int main(void)
{

    char str[10];
    int pos;

    puts("Type a text");
    gets(str);
    puts("Type a position");
    scanf("%d", pos);

    pos = pos - 1;

    printf("%s",  str[pos]);
    system("pause");
    return 0;
}

str[pos]
是单个字符,不是字符串,因此可以使用
%c
打印,但不能使用
%s

你想要:

printf("%c",  str[pos]);
system("pause");
也许你想做:

scanf("%d", &pos);

下面的行是错误的:

  printf("%s",  str[pos]);
您正在使用用于打印字符串的格式说明符
“%s”
,来处理
str[pos]
,这是一个
字符


由于
“%s”
需要一个指针地址,如果不小心使用,程序很可能会被破坏

到底是什么错误?确保str是alwas“\0”-terminated@jev我的代码停止工作并返回一些内存垃圾.re。马洛克,让我们看看你试过什么。这里有很多关于如何使用malloc的帖子,如果你不确定的话,你可以阅读。我试过这个,看起来不管大小都可以。您的源文件顶部是否有
#include
?如果是这样的话,你忘了展示它。如果没有,添加它。工作正常,但我仍然需要使用malloc作为字符串大小,有什么想法吗?在调用
scanf
时,您肯定需要使用
&pos
,而不是
pos
。您还需要按照其他答案的建议修复格式字符串。