#include<stdio.h> #include <string.h> int main() { int arr[3]={1,2,3}; printf("%d",strlen(arr)); }
时间: 2023-11-20 16:24:23 浏览: 104
这段代码是有问题的。strlen() 函数是用来获取字符串长度的,而 arr 是一个整型数组,并不是一个字符串,因此使用 strlen() 函数会导致运行时错误。正确的做法是使用 sizeof() 运算符来获取数组的大小,如下所示:
```c
#include <stdio.h>
int main() {
int arr[3] = {1, 2, 3};
printf("%d", sizeof(arr) / sizeof(int));
return 0;
}
```
上述代码中,sizeof(arr) 返回数组 arr 的总字节数,而 sizeof(int) 返回 int 类型的字节数,二者相除即可得到数组元素的个数,输出结果为 3。
相关问题
#include<stdio.h>#include<string.h>#include<windows.h>#include<stdlib.h>int main(){ char arr1[] = {"i hate you, i love you"}; char arr2[] = {"######################"}; int left = 0; int right = strlen(arr1) - 1;//int right = sizeof(arr1) / sizeof(arr1[0]) - 2; while (left <= right) { arr2[left] = arr1[left]; arr2[right] = arr1[right]; printf("%s\n", arr2); Sleep(1000); system("cls"); left++; right--; } printf("%s\n", arr1); return 0;}
这段代码看起来是用来显示一个逐渐被覆盖的字符串的效果。代码中定义了两个字符数组arr1和arr2,arr1保存了初始的字符串"i hate you, i love you",arr2被初始化为一串"#"字符。然后通过循环,逐渐将arr1的字符复制到arr2中,并在每次复制后打印arr2的内容,达到逐渐覆盖的效果。循环结束后,打印出原始字符串arr1。
需要注意的是,代码中使用了Windows系统特定的头文件windows.h和函数Sleep()来实现暂停一段时间的效果,并使用system("cls")来清空屏幕。这些部分在其他操作系统上可能需要进行相应的修改才能正常运行。
#include <stdio.h> #include<stdlib.h> #include<string.h> const int MaxSize = 50; typedef int ElemType; typedef struct { ElemType arr[MaxSize]; int len; }SqList; bool ListInsert(SqList& l, int i, ElemType elem) { if (i<1 || i>l.len + 1) { return false; } if (l.len == MaxSize) { return false; } for (int j = l.len;j>=i;j--) { l.arr[i - 1] = elem; l.arr[j] = l.arr[j - 1]; } l.arr[i - 1] = elem; l.len++; return true; } int main() { SqList L; bool ret; ElemType number; L.arr[0] = 1; L.arr[1] = 2; L.arr[2] = 3; L.len = 3; scanf("%d", &number); ret = ListInsert(L, 2, number); for (int i = 0; i < L.len; i++) { printf("%d ", L.arr[i]); } } 中scanf("%d", &number);哪里有问题
在这段代码中,`scanf("%d", &number);`的问题是缺少输入提示信息。在使用`scanf`函数接收用户输入时,最好给出相应的提示信息,以便用户知道需要输入什么类型的数据。你可以在`scanf`之前添加一行代码,如下所示:
```cpp
printf("请输入一个整数: ");
```
这样用户在输入数据时就会看到提示信息"请输入一个整数: ",然后再进行输入。
阅读全文