char arr[] = "12345"; char* arr1 = arr; char* arr2 = arr; *arr= "234576";哪里错了
时间: 2024-01-11 11:02:59 浏览: 119
这段代码有几个错误:
1. 在第三行中,应该使用指针 `arr2` 来指向字符串 "12345" 的地址,而不是将 `arr` 再次赋值给 `arr2`。
2. 在第四行中,应该使用单引号 `' '` 而不是双引号 `" "` 来表示字符。
正确的代码应该是这样的:
```
char arr[] = "12345";
char* arr1 = arr;
char* arr2 = &arr[0];
*arr = '2';
```
这段代码将字符 '2' 赋值给了字符串 "12345" 的第一个字符位置,即将字符串变为 "22345"。注意,`arr1` 和 `arr2` 都指向字符串 "12345" 的首地址,因此对 `*arr` 的修改会影响整个字符串。
相关问题
#include<stdio.h> #define N 100 void funprin(char * arr); int main(void) { char arr[N]; gets(arr); funprin(arr); return 0; } void funprin(char * arr) { char *p1 = arr; char *p2 = arr; while(*p1) { p1++; p2++; } p1--; p2--; while(p1!=arr){ while ((*p1>=65 && *p1<=90) || (*p1>=97 && *p1<=122)) { p1--; p2--; } *p1 = '\0'; p2++; if ((*p2>=65 && *p2<=90) || (*p2>=97 && *p2<=122)) { printf("%s ",p2); } p2 = p1; p1--; p2--; } printf("%s ",p1); puts(" "); }当输入aaa aaa a的时候出现段错误
这个代码中的问题在于,当输入的字符串中没有字母时,指针p2会指向字符串的开头,而在程序的最后,使用该指针进行输出时会导致段错误。解决这个问题的方法是在输出之前先判断指针p2是否指向了字符串的开头。可以在while循环中加入一个判断条件,判断p2是否指向了字符串的开头,如果是,则跳出循环,不进行输出。修改后的代码如下:
```c
#include <stdio.h>
#define N 100
void funprin(char *arr);
int main(void)
{
char arr[N];
gets(arr);
funprin(arr);
return 0;
}
void funprin(char *arr)
{
char *p1 = arr;
char *p2 = arr;
while (*p1)
{
p1++;
p2++;
}
p1--;
p2--;
while (p1 != arr)
{
while ((*p1 >= 65 && *p1 <= 90) || (*p1 >= 97 && *p1 <= 122))
{
p1--;
p2--;
}
*p1 = '\0';
p2++;
while (p2 != arr && ((*p2 >= 65 && *p2 <= 90) || (*p2 >= 97 && *p2 <= 122)))
{
p2++;
}
if (p2 != arr)
{
printf("%s ", p2);
}
p2 = p1;
p1--;
p2--;
}
printf("%s ", p1);
puts(" ");
}
```
int main() { int n; scanf("%d", &n); char** arr; arr = (char**)malloc(n * sizeof(char*)); for (int i = 0; i < n; i++){ arr[i] = (char*)malloc(sizeof(char)); } for (int i = 0; i < n; i++) { scanf("%s", arr[i]); } solution(n, arr); return 0; }
这段代码中,我们首先从标准输入中读入一个整数 n,然后动态分配一个 char 类型的二维数组 arr,它有 n 行,每行只有一个字符,读入 n 个字符串后调用了函数 solution。
不过需要注意的是,每次调用 malloc 分配内存时,应该给出所需内存大小,而不是固定的 1。因此,第 7 行中应该改为 `arr[i] = (char*)malloc((MAX_LENGTH + 1) * sizeof(char));`,其中 MAX_LENGTH 是字符串的最大长度。
阅读全文
相关推荐
















