[英]There is an error that I don't know
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
char names[10][10], name[10], gender;
printf("Welcome to Autumn sim");
names = ["Nathan", "August", "Bob", "Joe", "Stewart", "Martha", "Tiffany", "Darlene", "Kate", "Sophie"];
printf("What is your gender? m or f?\n");
scanf("%c", &gender);
if (gender == "m" || "M")
{
name = names[rand(0, 4)][10];
}
else if (gender == "F" || "f")
{
name = names[rand(5, 9)][10];
}
printf("Your name is...");
printf("Loading");
printf("%s", name);
return 0;
}
這是我的程序。 我正在嘗試詢問性別並隨機提供其名稱。 如果是男性,有五個名字,如果是女性,則另外五個名字。 但是它一直在說!表達式必須是可識別的1值! 我不明白。 請有人幫助我!!! 另外,我想知道如何在c中等待,我想在“加載”之后等待。
您不能分配給數組,只能復制到該數組。 或在定義數組時對其進行初始化。
簡單的解決方案是初始化數組:
char names[10][10] = {
"Nathan", "August", "Bob", "Joe", "Stewart",
"Martha", "Tiffany", "Darlene", "Kate", "Sophie"
};
您的gender
比較也有問題。 可變gender
是一個字符 ,因此您需要將其與另一個字符進行比較。 字符文字使用單引號而不是雙引號。 因此, 字符 m
為'm'
(不是字符串的"m"
)。
那么邏輯也是錯誤的。 表達式gender == 'm' || 'M'
gender == 'm' || 'M'
實際上等於gender == ('m' || 'M')
,這意味着您將gender
與'm' || 'M'
的結果進行比較 'm' || 'M'
。 表達式'm' || 'M'
'm' || 'M'
將始終為1
,因此比較將失敗。 您需要明確地將gender
與'm'
和'M'
如gender == 'm' || gender == 'M'
gender == 'm' || gender == 'M'
。
或者您可以使用tolower
函數,例如tolower(gender) == 'm'
。
要從名稱數組中獲得一個名稱,您有兩種選擇。 一種是繼續使用您的數組name
,但是由於您可以分配給數組,因此必須將其復制到該數組。 要復制字符串,通常使用strcpy
函數:
strcpy(name, names[1]); // Copy the second name
另一種可能性是使用指針,因此您將name
聲明為char
的指針:
char *name;
然后,可以使其指向names
數組中的任何元素:
name = names[1]; // Make name point to the second name
您應該使用哪一個取決於您在做什么。 如果只想顯示字符串,則兩者都可以正常工作。 如果要修改字符串而不修改names
的字符串,則應使用數組。
最后,您的代碼還有另一個問題。 rand
函數不能按預期工作。
請參見此舊答案,或者如何生成范圍內的隨機數。
您的代碼中有很多錯誤...
names
但不指定類型。 char
(性別)與"m"
,雙引號表示一個char *
值。 if (gender == "m" || "M")
,這意味着性別等於“ m”,或者“ M”具有一個值(不同為零),就是這樣。條件將永遠為真。 name = names[rand(0, 4)][10];
, name
的類型是什么, name
的類型是什么names[rand(0, 4)][10]
? rand
,但使用不正確。
嘗試解決這些問題,這應該會更好地工作;)
問題出在
names = ["Nathan", "August", "Bob", "Joe", "Stewart", "Martha", "Tiffany", "Darlene", "Kate", "Sophie"];
您不能分配給“數組”類型,並且語法也是錯誤的。
你必須
有很多方法可以實現這一目標。 這是方法之一。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
char name[10] = "";
char gender = ' ';
printf("Welcome to Autumn sim");
char names[10][10] = ["Nathan", "August", "Bob", "Joe", "Stewart", "Martha", "Tiffany", "Darlene", "Kate", "Sophie"];
printf("What is your gender? m or f?\n");
scanf("%c", &gender);
if (gender == 'm' || gender == 'M') //Compare gender with charecter ('m' OR 'f')
{
strcpy(name, names[rand(0, 4)]); //Copy the string
}
else if (gender == 'F' || gender == 'f')
{
strcpy(name, names[rand(5, 9)]);
}
else
{
printf("Invalid gender entered") //Check if input is invalid
}
if(0 < strlen(name)) //Print only if input is valid
{
printf("Your name is...");
printf("Loading");
usleep(1000*1000*1000); //1s sleep
printf("%s", name);
}
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.