當我在 c 中撰寫此代碼時,它不起作用,但是當我進行一些更改(例如用 cin 和 cout 替換)時,它在 c 中可以正常作業
#include <stdio.h>
#include <string.h>
int main()
{
int i=0,l,m;
char str[10],c;
printf("Enter string:");
scanf("%s",str);
printf("Enter character u want to search:");
scanf("%s",c);
l=strlen(str);
while (str[i]){
if (str[i]==c){
m=1;
break;
}
else{
m=0;
}
i ;
}
if (m==1){
printf("Present \n");
}
else{
printf("Not present \n");
}
}
uj5u.com熱心網友回復:
您需要按照此答案scanf中的說明對單個字符進行操作。只需替換為.scanf("%s",c)scanf(" %c", &c)
printf("Enter character u want to search:");
scanf(" %c", &c)
uj5u.com熱心網友回復:
變數c被宣告為 char 型別的單個物件
char str[10],c;
因此,要使用物件在物件中輸入資料,scanf您必須使用轉換說明符%c而不是%s指定用于輸入字串并通過指標通過參考傳遞物件的轉換說明符
scanf( " %c", &c );
注意轉換說明符前的空白%c。它允許跳過輸入流中的空格。
此外,變數m應該在 while 回圈之前初始化,例如
int i=0,l,m = 0;
并且該變數l應該被洗掉,因為它實際上沒有被使用。的呼叫strlen是多余的。
并且您需要在使用它們的最小范圍內宣告變數。
該程式可以如下所示
#include <stdio.h>
int main( void )
{
char str[10] = { 0 };
printf( "Enter string: " );
scanf( "%9s", str );
char c = 0;
printf( "Enter character you want to search:" );
scanf( " %c", &c );
size_t i = 0;
while ( str[i] != '\0' && str[i] != c ) i ;
if ( str[i] != '\0' )
{
printf( "The character %c is present in the string.\n", c );
}
else
{
printf( "The character %c is not present in the string.\n", c );
}
}
uj5u.com熱心網友回復:
您的第二個 scanf 試圖將字串放入單個字符中。(scanf("%s",c); 將其掃描為 char 或 int,或者使用陣列存盤字串,然后從中提取第一個 char 用于比較測驗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/419670.html
標籤:
上一篇:在函式中初始化指標
下一篇:如何撰寫線性反饋移位暫存器
