指针和字符数组的应用,用五种方法输出字符串“China”。请改正程序中的错误,使它能得出正确的结果。 #include <stdio.h> main() { int i = 0; char str[6] = {'C', 'h', 'i', 'n', 'a', '\0'}, str1[6] , *ptr, *ptr1, *ptr2 , str2[5]; while (str[i] != '\0') { putchar(*str); str++; } scanf("%s", ptr); puts(ptr); ptr1 = str; puts(ptr1); ptr2 = "China"; puts(ptr2); str2 = "China"; printf("%s", str2); }
时间: 2024-01-16 22:03:25 浏览: 67
首先需要修改的是 `scanf("%s", ptr)`,应该改为 `scanf("%s", str1)`,因为 `ptr` 指针没有分配内存空间,无法存储输入的字符串。同时,也需要在 `ptr1` 和 `ptr2` 的定义中加上指针类型的标识符 `*`。
其次,字符数组 `str` 的大小应该为 5,因为字符串“China”只有 5 个字符,而不是 6。
最后,字符数组 `str2` 不能直接赋值为字符串常量,需要使用 `strcpy` 函数进行赋值。
修改后的代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
int i = 0;
char str[5] = {'C', 'h', 'i', 'n', 'a'}, str1[6], *ptr, *ptr1, *ptr2, str2[6];
while (str[i] != '\0') {
putchar(str[i]);
i++;
}
scanf("%s", str1);
puts(str1);
ptr1 = str;
puts(ptr1);
ptr2 = "China";
puts(ptr2);
strcpy(str2, "China");
printf("%s", str2);
return 0;
}
```
使用五种方法输出字符串“China”:
1. 使用字符数组直接输出
```c
char str[] = "China";
printf("%s", str);
```
2. 使用字符指针直接输出
```c
char *str = "China";
printf("%s", str);
```
3. 使用字符数组循环输出
```c
char str[] = "China";
for (int i = 0; i < strlen(str); i++) {
putchar(str[i]);
}
```
4. 使用指针循环输出
```c
char *str = "China";
for (int i = 0; i < strlen(str); i++) {
putchar(*(str + i));
}
```
5. 使用指针指向字符数组输出
```c
char str[] = "China";
char *ptr = str;
while (*ptr != '\0') {
putchar(*ptr);
ptr++;
}
```
阅读全文