请问这个字符串操作哪里错了呢?感觉字符串操作很特别。。完全不会

#include <stdio.h>#include <string.h>int main()
{	char a[10000];	
        char b[10000];	
        printf ("请输入两个字符串:");	
        while(1){		
        putchar(a[0]);	}		
        //scanf("%s\n");		
        printf ("%s",a[0]) ;		
        return 0;}

上面的代码执行出来。。是永远在输入,没有输出。。感觉字符串的操作很麻烦。。摸索到现在还是不太会。。再如以下的也有点奇怪的感觉

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){	
char line[] = "hello,my name is xx\n";
	printf("%s",line);	
	char *copy = (char*)malloc(strlen(line)+1);
	strcpy(copy,line);	
	copy[strlen(line)] = '\0' ;	
	//printf("%s\n",*copy);	printf("%s\n",copy);	
	return 0;}

问题在于。。。上面的代码最后一行为什么printf后面的copy不用加*呢?同样是运用指针,如果我用来操作打印int型变量就一定是要加*的,不然打印出来是地址。。但是字符串又不一样。。。求各位大佬慷慨解释一下

慕姐6162487
浏览 937回答 1
1回答

慕盖茨9781818

第一个,因为你的puchar在while(1)中,你没设置break的条件,会无限循环要求你输入的,修改循环部分代码C语言中是没有特定字符串类型的,你使用%s输出, 参数是一个指向字符数组的指针,所以你的copy不用加*, 因为copy本来就是个指针,你传入int,他会认为这是个指针来进行操作,就会输出地址,所以你需要加*号。可能有点没描述清楚,但第二个你需要多看看指针相关的内容。
打开App,查看更多内容
随时随地看视频慕课网APP