如何在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);
...
}