/* ============================================================================ Name : String.c Author : lf Version : Copyright : Your copyright notice Description : 字符串操作练习以及scanf()的注意事项 1 字符串的插入 2 删除字符串中的字符 3 scanf()的注意事项 ============================================================================ */ #include <stdio.h> #include <stdlib.h> #include <string.h> void test1(); void test2(); void test3(); int main(void) { test1(); test2(); test3(); return EXIT_SUCCESS; } /** * 字符串的插入 * 操作步骤: * 1 找到插入的位置 * 2 保存插入位置之后的字符串 * 3 将插入位置之后的字符串截掉 * 4 原字符串与待插入字符串组拼 * 5 原字符串与原插入位置后的字符串组拼 */ void test1(){ char insertString[10]=" hello vc"; char oldString[40]="hello java hello C++ hello c"; printf("oldString=%s\n",oldString); char searchString[10]="C++"; char *p=strstr(oldString,searchString); if (p!=NULL) { char tempString[20]; strcpy(tempString,p+strlen(searchString)); printf("tempString=%s\n",tempString); *(p+strlen(searchString))='\0'; printf("oldString=%s\n",oldString); strcat(oldString,insertString); printf("oldString=%s\n",oldString); strcat(oldString,tempString); printf("oldString=%s\n",oldString); } else { printf("NOT FOUND\n"); } printf("============\n"); } /** * 删除字符串中的字符 */ void test2() { int location = 0; char oldString[40] = "hello java hello C++ hello c"; printf("oldString=%s\n", oldString); char newString[40]; char deleteChar = 'l'; char *p = oldString; while (*p != '\0') { if (*p != deleteChar) { newString[location] = *p; location++; } else { } p++; } printf("newString=%s\n", newString); strcpy(oldString,newString); printf("oldString=%s\n", oldString); printf("============\n"); } /** * scanf()的注意事项 * scanf()会将空格,制表符,空格,换行符,换页符当做数据的终止符. * 但是gets()不会,所以在输入字符串含有以上字符时可gets() */ void test3() { // char a[30]; // scanf("%s", a); // printf("a=%s\n", a); char b[30]; gets(b); printf("b=%s\n", b); }