修改程序中四处错误语句

#include<stdio.h>
voidmain()
{
charstr="123456789abc",*p;//error1
p=str;
putchar(p);//error2
printf("string:%c\n",p);//error3
printf("string:%s\n",*p);//error4
}

  1. char *str = "123456789abc", *p;或者char str[] = "123456789abc", *p;
  2. putchar(*p);
  3. printf("string: %c", *p);
  4. printf("string: %s", p);

修改后:

#include <stdio.h>

int main() {
    char str[] = "123456789abc";  // 修改为字符数组
    char *p;  // 指针声明,不同类型不能放一起

    p = str;  // 指针指向字符串数组首地址
    while (*p != '\0') {
        putchar(*p);  // 逐个字符输出
        p++;  // 指针向后移动
    }
    putchar('\n');  // 输出换行

    p = str;  // 重新将指针指向字符串数组首地址
    printf("string: %s\n", p);  // 直接输出字符串
    return 0;
}
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7639748
  • 这篇博客你也可以参考下:putchar()的使用
  • 你还可以看下c语言参考手册中的 c语言-putchar()
  • 除此之外, 这篇博客: 数组的输入与输出中的 (2)putchar: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • putchar也是用来输出单个字符的与printf("%c",a)相同,但个人感觉用的时候比较少,也有可能是我学艺不精,还没有到使用它的时候。

    一般情况下我们使用getchar于putchar相联用,比如说下面的代码示例:

    #include<stdio.h>
    int main()
    {
    	char a = getchar();;
    	char b = getchar();
    	putchar(a);
    	putchar(b);
    	return 0;
    }