computer-cLanguage
  LO8hNSnQb2Xy 2023年11月02日 102 0

一. runoobstruct

/*【WindowsCMD】
gcc -fexec-charset=GBK a1.c -o a1 ;       .\a1.exe
gcc -fexec-charset=GBK a1.c -o a1.exe  ;  .\a1.exe
gcc -S a1.c (反编译 assembler language)

*/

#include<stdio.h>  //printf vscode=CTRLShift+L选中变量名批量修改
#include<string.h> //strlen

#define STRING "hello world"

int main(){
   
   char str0[12]="hello world";
   printf("【1】string/charAarray = %s \n",str0); //stdio.h
   char str[]=STRING;
    //stringBytesOccupied12('\0'空字符) stringLength11
   printf("【2】%d\t%d\n【3】",sizeof(str),strlen(str));

   for(int i=0;i<sizeof(str);i++)printf("%c",str[i]);
   printf("\n【4】");

   for(int i=0;i<strlen(str);i++){printf("%c",str[i]);};
   printf("\n【5】越界: ");

   for(int i=0;i<strlen(str)+12*10;i++){printf("%c",str[i]);};
   
   return 0;
}
#include<stdio.h>  //printf
#include<string.h> //strlen strchr
#include<stdlib.h> //system("pause") 请按任意键继续...
int main(){
   char str[]="hello world";
   char *s1,*s2; //Declare two character pointers

   s1=str; //s1指向str数组了 当然也可以越界
   for(int i=0;i<strlen(str)+1;i++){printf("(%d,%d,%c) ",&s1[i],s1[i],s1[i]);}
   printf("%s\n",s1);

   s1=strchr(str,'o'); //s1指向str[4]='o'的地址
   printf("%d %d %c\n",s1,&str[4],*s1);

   s2=strchr(str,'G');
   if(s2==NULL){printf("【1】str字符串中没有G\n");}
   
   printf("【2】");system("pause");

   return 0;
}
#include<stdio.h>  //printf scanf getchar
#include<string.h> //strlen
int main(){
   int index;
   printf("【1】请输入索引值:");
   scanf("%d", &index);  //需要键盘输入Enter,index才获取qvte
   printf("%d\n",index);
  
   int c;
   printf("【2】因键盘前次输Enter键 下面循环语句未执行!\n");
   while ((c = getchar()) != '\n') printf("%c", c);

   printf("【3】第二个循环(以Enter结束): ");
   while ((c = getchar()) != '\n') printf("%c", c);


   char str[20];//stringLen=19 占字符数=20 str[19]='\0'结束;
   printf("\n【4】请输入字符串:");
   char *ch=fgets(str,7,stdin);//只选取键盘输前面6字符(可以小于6字符)给str
   printf("str=%s strlen=%d sizeof=%d\n",str,strlen(str),sizeof(str)); 
   printf("str首字符地址=%d *ch=%c sizeof(*ch)=%d \n",ch,*ch,sizeof(*ch));

   for(int i=0;i<strlen(str);i++)printf("%c",ch[i]);//但遍历可以使用
   printf("\n");

   return 0;
}
#include<stdio.h>  //printf scanf getchar
#include<string.h> //strlen

char*s_gets(char*,int);
int main(){
   char title[6]; //字符数组所有字符元素为空 title[1]='\0'
   printf("【0】字符数组所有字符元素为空 title=%s\n",title);
   //getchar();//是否需要该代码 (从键盘获取一个个字符Enter结束)
   char *res=s_gets(title,6);
   printf("\n【e】title=%s res=(%d,%c)",title,res,*res);

   return 0;
}

char * s_gets(char * st, int n){
    char * ret_val;
    char * find;
    printf("【1】stdin键盘输入(还可能存在其他方式输入): "); 
    //故st字符串中间存在可能存在只换行但是不Enter的字符'\n'情形
    ret_val = fgets(st, n, stdin);
    printf("【2】ret_val = (%d %c) str = %s\n",ret_val,*ret_val,st);
    if (ret_val)
    {
      printf("【3】进入判断\n");
      find = strchr(st, '\n');    //查找换行符
     
      if (find)    //  查找地址不为空
         *find = '\0';    //在此处放入一个空字符
      else
         printf("【4】find=%d(代表没有找到)",find);
         while (getchar() != '\n')continue; //处理剩余字符
    }
    return ret_val;
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: mybatis 架构图 下一篇: java---反射(重点)
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
LO8hNSnQb2Xy
作者其他文章 更多

2023-11-13

2023-11-02