你的char c[20]小了,如果药品名为20个字符,则输出错误,因为字符串的最后一个字符为空字符’\0‘,若药品名为20个字符,输出时没有检测到空字符,则会将下一个药品名连着当前药品名输出。
改写代码如下,望采纳!
#include <iostream>
#include <string.h>
using namespace std;
struct zifuchuan{
char c[21];/////////////修改部分
};
int main(){
struct zifuchuan arr[100];
int num,i,j;
cin>>num;
for(i=0;i<num;i++)
scanf("%s", arr[i].c);
for(i=0;i<num;i++){
for(j=0;j<strlen(arr[i].c);j++){
if(j==0&&arr[i].c[j]>=97&&arr[i].c[j]<=122)
arr[i].c[j]-=32;
if(j!=0&&arr[i].c[j]>=65&&arr[i].c[j]<=90)
arr[i].c[j]+=32;
cout<<arr[i].c[j];
}
cout<<endl;
}
return 0;
}
```
都用上c++了,结构体不应该这样玩。