c语言:用指针实现在具有N个元素的一维字符型数组中删除所有空格字符。
时间: 2024-02-05 21:13:08 浏览: 82
可以使用指针遍历一维字符型数组,将非空格字符移动到新的数组中。
以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
void removeSpaces(char *str) {
int i = 0, j = 0;
while (str[i]) {
if (str[i] != ' ') {
str[j] = str[i];
j++;
}
i++;
}
str[j] = '\0';
}
int main() {
char str[100];
printf("Enter a string: ");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0'; // remove newline character
removeSpaces(str);
printf("String after removing spaces: %s\n", str);
return 0;
}
```
使用 `fgets` 函数获取用户输入的字符串,并使用 `strcspn` 函数去掉末尾的换行符。然后调用 `removeSpaces` 函数,该函数使用两个指针 `i` 和 `j` 遍历字符串,如果当前字符不是空格,就将其移动到新的位置。最后将新的位置的字符设置为字符串结束符。
相关问题
用c语言写函数名称:stdinForStu * 函数功能:从键盘输入数据,保存到指针 p 所指向的数组中 * 输入格式:共输入 num 行;每行输入一个 stu 型数据,每个成员变量之间用空格分隔 * 形式参数:struct stu * p,指向 stu 型一维数组首地址 * 形式参数:int num,一维数组元素个数 * 返 回 值:无
以下是用 C 语言编写的函数 `stdinForStu` 的代码实现:
```c
#include <stdio.h>
struct stu {
int id;
char name[20];
int score;
};
void stdinForStu(struct stu* p, int num) {
for (int i = 0; i < num; i++) {
scanf("%d %s %d", &(p+i)->id, (p+i)->name, &(p+i)->score);
}
}
```
函数 `stdinForStu` 接收两个参数,一个是结构体 `stu` 的一维数组首地址,另一个是数组元素个数。函数通过 `scanf` 函数从键盘输入数据,并将其保存到指针 `p` 所指向的数组中。由于 `stu` 结构体中包含不同类型的成员变量,因此需要使用不同的格式字符串进行输入。在循环中,每次输入一行数据,将其保存到数组中的对应元素。函数没有返回值。
* @Filename: ex801.c @Author: Ju Chengdong @Version: 1.0 @Date: 2021-03-18 @Description: File Character Reading and Writing */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc,char *argv[]){ /*(1)声明函数及变量*/ int writeToFile(char *str, char *fileName, char *mode); char str[100]; char fileName[] = "ex801.txt"; /*(2)获取键盘输入字串*/ fgets(str, 100, stdin); //gets(str); //将回车看作字串输入结束标志,字串中可以有空格 //scanf("%s", str); //将空格看作字串输入结束标志,字串中不能有空格 /*(3)将字串写入文件*/ int charNum = writeToFile(str, fileName, "w"); if(charNum < 0){ //printf("write error");//用于调试 return -1; } return 0; } /* * 函数名称:writeToFile * 函数功能:将字串写入文件 * 形式参数:char *str,一维字符数组(字符串)首地址 * 形式参数:char *fileName,待写入的文件路径及名称 * 形式参数:char *mode,文件使用方式 * 返 回 值:int型,若文件打开异常,返回 -1;否则返回写入到文件的字符数 */ int writeToFile(char *str, char *fileName, char *mode){ // 请编程实现本函数 }
这是一个C语言程序,用于将用户从键盘输入的字符串写入到文件中。程序分为主函数main和写入文件函数writeToFile两部分。
主函数中声明了需要用到的函数和变量,获取键盘输入的字符串,调用写入文件函数writeToFile将字符串写入到文件中。
写入文件函数writeToFile的作用是将字符串写入到指定文件中,并返回写入到文件的字符数。该函数需要三个参数:字符串指针、文件名和文件使用方式。函数中使用fopen打开指定文件,使用fwrite将字符串写入到文件中,最后使用fclose关闭文件。
下面是完整的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int writeToFile(char *str, char *fileName, char *mode);
int main(int argc,char *argv[]){
int writeToFile(char *str, char *fileName, char *mode);
char str[100];
char fileName[] = "ex801.txt";
fgets(str, 100, stdin);
int charNum = writeToFile(str, fileName, "w");
if(charNum < 0){
printf("write error");
return -1;
}
return 0;
}
int writeToFile(char *str, char *fileName, char *mode){
FILE *fp;
int charNum;
fp = fopen(fileName, mode);
if(fp == NULL){
return -1;
}
charNum = fwrite(str, sizeof(char), strlen(str), fp);
fclose(fp);
return charNum;
}
```
阅读全文