int brr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; printf("%d", strlen(brr));
时间: 2023-10-02 20:06:24 浏览: 28
这段代码是错误的,因为strlen函数是用来计算字符串长度的,而brr是一个整型数组,并不是一个字符串,所以无法使用strlen函数计算其长度。正确的做法应该使用sizeof运算符计算整型数组的长度,代码如下:
```c
int brr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int len = sizeof(brr) / sizeof(brr[0]);
printf("%d", len);
```
这样就可以正确输出数组brr的长度了。
相关问题
帮我优化一下int *func(int u,int o){ int (*arr)[o]=(int(*)[o]) malloc(u*sizeof (int[o])); return *arr; } int main(){ int n,m; scanf("%d%d",&n,&m); int *brr = func(n,m); printf("%d",brr); }使其可以手动输入两个数开辟一个二维数组的功能
可以将函数中的 `malloc` 改为循环开辟一维数组,并将每个一维数组的首地址存入二维数组中,同时在 `main` 函数中添加循环输入二维数组的元素值的代码。修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int **func(int u, int o) {
int **arr = (int **)malloc(u * sizeof(int *));
for (int i = 0; i < u; i++) {
arr[i] = (int *)malloc(o * sizeof(int));
}
return arr;
}
int main() {
int n, m;
scanf("%d%d", &n, &m);
int **brr = func(n, m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &brr[i][j]);
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d ", brr[i][j]);
}
printf("\n");
}
for (int i = 0; i < n; i++) {
free(brr[i]);
}
free(brr);
return 0;
}
```
这样就可以手动输入两个数并开辟一个二维数组,并通过循环输入和输出二维数组的元素值。注意在程序结束前要释放动态分配的内存,否则会造成内存泄漏。
#include <stdio.h> #include <string.h> int main() { char arr[1000], brr[1000]; int i = 0, count = 0, sum = 0; scanf("%s", arr); while (i < sizeof(arr)) { if (arr[i] == arr[i + 1]) count += 1; else { if (count == 1) { brr[sum] = arr[i]; sum++; } else { brr[sum] = count; brr[sum + 1] = arr[i]; sum += 2; count = 1; } } } printf("%s", brr); return 0; }检查有无问题
这段代码有几个问题,首先是在输入字符串时没有限制输入长度,可能会导致数组越界;其次是在 while 循环中没有对 i 进行更新,会导致死循环;还有在输出字符串时,如果 brr 数组中有数字,直接输出会被当成 ASCII 码输出,需要对其进行处理。以下是修正后的代码:
```
#include <stdio.h>
#include <string.h>
int main() {
char arr[1000], brr[1000];
int i = 0, count = 1, sum = 0;
scanf("%s", arr);
int len = strlen(arr);
while (i < len) {
if (arr[i] == arr[i + 1]) {
count += 1;
} else {
if (count == 1) {
brr[sum] = arr[i];
sum++;
} else {
brr[sum] = '0' + count;
brr[sum + 1] = arr[i];
sum += 2;
count = 1;
}
}
i++;
}
brr[sum] = '\0';
printf("%s", brr);
return 0;
}
```
阅读全文