我有一个结构
struct StudentRecord{
char StudentFamilyName[20]
}gRecs[50];
cout << "Family Name: ";
cin >> gRecs[50].StudentFamilyName;
char str[20];
str[20] = toupper(gRecs[i].StudentFamilyName[0]);
cout << str;
我想要做的是将姓氏的第一个字母存储为
大写,其余为小写?我怎么做?
我使用toupper
但是当我实现它时它不起作用。任何人都可以帮我吗?谢谢。
注意:这是一个考试问题。
答案 0 :(得分:2)
以下是使用字符算术大写字符串的方法:
url
答案 1 :(得分:1)
您的问题与toupper
无关。实际上有几个。
cin >> gRecs[50]
gRecs
的大小为50,因此索引50超出范围。要插入第一条记录,您将使用
cin >> gRecs[0].StudentFamilyName;
第二条记录:gRecs[1]
等。
接下来,
char str[20];
str[20] = toupper(str[0]);
您声明str
,其中未填充任何内容,然后在其上调用toupper
。
索引([20]
)是第21个字符(超出范围)。您正试图转换str
toupper
中的第21个字符。
您需要的是:
// i is the index into your student records array, possibly in a loop
cin >> gRecs[i].StudentFamilyName;
gRecs[i].StudentFamilyName[0] = toupper(gRecs[i].StudentFamilyName[0]);