#include <stdio.h> #include <string.h> int main(){ char str[] = "http://task.lmcjl.com"; int len = strlen(str), i; //直接输出字符串 printf("%s\n", str); //每次输出一个字符 for(i=0; i<len; i++){ printf("%c", str[i]); } printf("\n"); return 0; }运行结果:
#include <stdio.h> #include <string.h> int main(){ char str[] = "http://task.lmcjl.com"; char *pstr = str; int len = strlen(str), i; //使用*(pstr+i) for(i=0; i<len; i++){ printf("%c", *(pstr+i)); } printf("\n"); //使用pstr[i] for(i=0; i<len; i++){ printf("%c", pstr[i]); } printf("\n"); //使用*(str+i) for(i=0; i<len; i++){ printf("%c", *(str+i)); } printf("\n"); return 0; }运行结果:
char *str = "http://task.lmcjl.com";或者:
char *str; str = "http://task.lmcjl.com";字符串中的所有字符在内存中是连续排列的,str 指向的是字符串的第 0 个字符;我们通常将第 0 个字符的地址称为字符串的首地址。字符串中每个字符的类型都是
char
,所以 str 的类型也必须是char *
。#include <stdio.h> #include <string.h> int main(){ char *str = "http://task.lmcjl.com"; int len = strlen(str), i; //直接输出字符串 printf("%s\n", str); //使用*(str+i) for(i=0; i<len; i++){ printf("%c", *(str+i)); } printf("\n"); //使用str[i] for(i=0; i<len; i++){ printf("%c", str[i]); } printf("\n"); return 0; }运行结果:
%s
输出整个字符串,都可以使用*
或[ ]
获取单个字符,这两种表示字符串的方式是不是就没有区别了呢?#include <stdio.h> int main(){ char *str = "Hello World!"; str = "I love C!"; //正确 str[3] = 'P'; //错误 return 0; }这段代码能够正常编译和链接,但在运行时会出现段错误(Segment Fault)或者写入位置错误。
#include <stdio.h> int main(){ char str[30]; gets(str); printf("%s\n", str); return 0; }运行结果:
本文链接:http://task.lmcjl.com/news/7632.html