给出一个函数体,函数体实现字符串转换为整数
时间: 2023-04-03 07:02:57 浏览: 74
以下是一个函数体,可以实现字符串转换为整数:
int strToInt(char* str) {
int res = 0;
int sign = 1;
int i = 0;
if (str[0] == '-') {
sign = -1;
i++;
}
for (; str[i] != '\0'; i++) {
res = res * 10 + str[i] - '0';
}
return sign * res;
}
相关问题
将文件中的字符串存入结构体中的枚举体怎么用fscanf实现
我们可以使用`fscanf`函数来读取文件中的字符串,并把它们存入结构体中的枚举体中。假设我们有一个文本文件,里面存储了一些学生的信息,每一行记录一个学生的姓名、年龄和性别,用逗号分隔。我们可以使用结构体和枚举体来存储这些信息,具体实现如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
enum Gender {
MALE,
FEMALE,
OTHER
};
struct Student {
char name[50];
int age;
enum Gender gender;
};
int main() {
FILE *fp;
struct Student students[100];
int count = 0;
fp = fopen("students.txt", "r");
if(fp == NULL) {
printf("Failed to open file!\n");
return 1;
}
while(fscanf(fp, "%[^,],%d,%d\n", students[count].name, &students[count].age, &students[count].gender) == 3) {
count++;
}
fclose(fp);
// print the information of all students
for(int i=0; i<count; i++) {
printf("Name: %s\n", students[i].name);
printf("Age: %d\n", students[i].age);
printf("Gender: ");
switch(students[i].gender) {
case MALE:
printf("Male\n");
break;
case FEMALE:
printf("Female\n");
break;
case OTHER:
printf("Other\n");
break;
default:
printf("Unknown\n");
}
printf("\n");
}
return 0;
}
```
在上面的示例代码中,我们定义了一个枚举体`Gender`,包括了三种性别。同时,我们定义了一个结构体`Student`,包括了姓名、年龄和性别三个成员变量。在`main`函数中,我们首先打开文件,然后使用`fscanf`函数逐行读取文件内容。对于每一行记录,我们使用`%[^,]`来读取姓名,`%d`来读取年龄,`%d`来读取性别,并把它们存入一个`Student`结构体中,最后使用一个`count`变量来记录一共有多少个学生。读取完文件后,我们可以使用一个循环来遍历所有学生的信息,并把它们打印出来。
需要注意的是,在使用`fscanf`函数读取文件的过程中,我们需要使用`%d`来读取枚举类型的变量,因为枚举类型本质上就是整数类型。在读取完性别信息后,我们需要把它转换为对应的枚举值。在这个示例中,我们把枚举值的类型定义为整数类型,所以没有进行转换。如果我们把枚举值的类型定义为枚举类型,那么我们需要使用`switch`语句来根据读取的整数值来设置枚举成员变量的值。
用递归的方法将一个整数 n 转换成字符串。例如,输入 483,输出应为字符串"483"。n 的位数不确定,可以是任意位数的整数。c语言
下面是一个使用递归的 C 语言程序,将整数 n 转换为字符串:
```c
#include <stdio.h>
void int_to_str(int n, char str[], int len) {
if (n == 0) {
str[len] = '\0'; // 在字符串末尾添加空字符
return;
}
int digit = n % 10;
str[len-1] = digit + '0'; // 将数字转换为字符并存储到字符串中
int_to_str(n / 10, str, len-1); // 递归调用函数,处理剩余的数字
}
int main() {
int n = 483;
char str[20]; // 假设最多有 20 位数字
int_to_str(n, str, 3); // len = 3,因为 n 有 3 位数字
printf("The string representation of %d is %s\n", n, str);
return 0;
}
```
程序首先定义了一个 `int_to_str` 函数,用于将整数 n 转换为字符串。该函数需要三个参数:整数 n,字符数组 str 和数组长度 len。程序中假设最多有 20 位数字,因此可以将 len 初始化为 20,然后在递归过程中逐步减小 len 的值。
在函数体中,先判断 n 是否为 0,如果是,说明已经处理完所有数字,可以在字符串末尾添加空字符 '\0' 并返回。否则,先取出 n 的个位数字,将其转换为字符并存储到 str 数组中。然后递归调用函数,处理剩余的数字,直到 n 变为 0。
最后,在主函数中调用 int_to_str 函数将整数转换为字符串,并打印结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)