如何在c中读取后跟字符的字符串? #包括 int main(){ char*str,ch; int计数=0,i; printf(“\n输入字符串:”); scanf(“%s”,str); printf(“\n输入要搜索的字符:”; scanf(“%c”和“ch”); 对于(i=0;str[i]!='\0';i++){ if(str[i]==ch) 计数++; } 如果(计数=0) printf(“\n字符'%c'不存在”,ch); 其他的 printf(“\n字符“%c”的当前位置:%d”,ch,count); 返回(0); }

如何在c中读取后跟字符的字符串? #包括 int main(){ char*str,ch; int计数=0,i; printf(“\n输入字符串:”); scanf(“%s”,str); printf(“\n输入要搜索的字符:”; scanf(“%c”和“ch”); 对于(i=0;str[i]!='\0';i++){ if(str[i]==ch) 计数++; } 如果(计数=0) printf(“\n字符'%c'不存在”,ch); 其他的 printf(“\n字符“%c”的当前位置:%d”,ch,count); 返回(0); },c,C,当我执行此代码时,字符串将在之后被提取,它不会提取任何字符并显示结果。您的代码可能会崩溃(在我的机器上验证时发生在我身上),因为您没有为str分配空间。。。 你应该改变char*str,ch类似于char*str=malloc(100),ch 另外,更改scanf(“%c”和&ch)到scanf(“%c”和&ch)以解决您的问题。这是因为当您输入字符串时,以enter结尾,enter将被下一个scanf(%c)使用,因此,您的第二个scanf()只读取enter,而不读取您想要的字符扫描频率(“

当我执行此代码时,字符串将在之后被提取,它不会提取任何字符并显示结果。

您的代码可能会崩溃(在我的机器上验证时发生在我身上),因为您没有为
str
分配空间。。。 你应该改变
char*str,ch类似于
char*str=malloc(100),ch


另外,更改
scanf(“%c”和&ch)
scanf(“%c”和&ch)以解决您的问题。这是因为当您输入字符串时,以enter结尾,enter将被下一个
scanf(%c)
使用,因此,您的第二个
scanf()
只读取enter,而不读取您想要的字符<代码>扫描频率(“%c”和“ch”)
将忽略所有空白,包括之前输入的enter:-)并允许处理您的字符

始终这样写入scanf,以读取上一个换行符:

#include<stdio.h>
int main() {
   char *str, ch;
   int count = 0, i;

   printf("\nEnter a string : ");
   scanf("%s", str);

   printf("\nEnter the character to be searched : ");
   scanf("%c", &ch);

   for (i = 0; str[i] != '\0'; i++) {
      if (str[i] == ch)
         count++;
   }

   if (count == 0)
      printf("\nCharacter '%c'is not present", ch);
   else
      printf("\nOccurence of character '%c' : %d", ch, count);

   return (0);
}

使用
getchar()


定义最大长度是解决此问题的最简单方法。除了使用scanf,我建议使用fgets,如下所示。由于您可以定义要读取的最大字符数,因此它更安全。


1)
str
未指向有效区域。2)
scanf(“%c”和&ch)-->
scanf(“%c”和&ch)
str
是未初始化的指针。在
scanf
中使用它会导致未定义的行为。需要先分配缓冲区并分配给
str
。请注意,现在使用此方法很可能以新行字符(
\n
)结尾。fgets会自动将“\0”放在最后一个位置。您可能需要添加该
scanf()
如图所示,可能仍然会使提供的任何缓冲区溢出。@alk您的意思是输入字符串大于缓冲区吗?
printf("\nEnter the character to be searched : ");
scanf(" %c", &ch);
printf("\nEnter the character to be searched : ");
getchar();
scanf("%c", &ch);
#define MAX_LENGTH 100

int main() {
   char str[MAX_LENGTH], ch;
   int count = 0;

   printf("\nEnter a string : ");
   fgets(str, MAX_LENGTH, stdin);

   printf("\nEnter the character to be searched : ");
   scanf("%c", &ch);

   ...

}