一道字符串数组的问题求解答

img

img


题目和代码如上,现在我提交上去显示错误答案,但是我自己输样例是没问题的,请帮我看一下哪里出问题了?顺便问一句要回去string定义的字符串长度怎么获取,strlen函数好像不行

你的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++了,结构体不应该这样玩。