C中带字符串的Malloc
当我键入想要查找的字符位置时,这些代码停止工作,另外,我需要使用str作为指针和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
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
。您还需要按照其他答案的建议修复格式字符串。