#include <stdio.h> #include <string.h> void removeTrailingSpaces(char *str) { int len = strlen(str); while (len > 0 && str[len-1] == ' ') { str[len-1] = '\0'; len--; } } int main() { char str[100]; printf("请输入字符串:"); for(int i=0;i<=100;i++){ scanf("%s", str[i]); } removeTrailingSpaces(str); printf("删除尾部空格后的字符串为:%s\n", str); return 0; }
时间: 2024-04-22 18:27:49 浏览: 94
你的代码存在一些问题。首先,在循环中使用 `scanf` 读取字符串时,应该使用 `%s` 而不是 `%c`。其次,`str` 是一个字符数组,而你在循环中使用 `str[i]` 来存储字符串,这错误的。应该使用 `str` 来存储整个字符串。
以下是修正后的代码:
```c
#include <stdio.h>
#include <string.h>
void removeTrailingSpaces(char *str) {
int len = strlen(str);
while (len > 0 && str[len-1] == ' ') {
str[len-1] = '\0';
len--;
}
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%[^\n]%*c", str);
removeTrailingSpaces(str);
printf("删除尾部空格后的字符串为:%s\n", str);
return 0;
}
```
在修正后的代码中,我们使用 `%[^\n]%*c` 格式控制符来读取一行输入,并且在读取完字符串后,使用 `removeTrailingSpaces` 函数来删除尾部的空格。最后,将删除空格后的字符串输出到标准输出。
相关问题
#include <stdio.h> #include <string.h> void removeTrailingSpaces(char *str) { int len = strlen(str); int i=6; while(len!='\0') { str[i] = '#'; i++; } printf("变换后的字符串为:%s",str); } int main() { char str[100]; printf("请输入字符串:"); scanf("%[^\n]%*c", str); removeTrailingSpaces(str); return 0; }
你的代码还是存在一些问题。在 `removeTrailingSpaces` 函数中,你使用了错误的条件来判断字符串是否结束。另外,你将循环中的条件设置为 `len != '\0'`,这是错误的,应该使用 `str[i] != '\0'` 来判断字符串是否结束。
以下是修正后的代码:
```c
#include <stdio.h>
#include <string.h>
void removeTrailingSpaces(char *str) {
int len = strlen(str);
int i = 0;
while (str[i] != '\0') {
str[i] = '#';
i++;
}
printf("变换后的字符串为:%s\n", str);
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%[^\n]%*c", str);
removeTrailingSpaces(str);
return 0;
}
```
在修正后的代码中,我们使用 `str[i] != '\0'` 来判断字符串是否结束,并将每个字符替换为 `#`。最后,输出变换后的字符串到标准输出。
修改:#include <stdio.h> #include <string.h> #include <stdlib.h> void reverse(char *str) { int len = strlen(str); char *start = str; char *end = str + len - 1; char temp; while(start < end) { temp = *start; *start = *end; *end = temp; start++; end--; } } int main() { char a[100]; printf("输入句子"); gets(a); puts(a); reverse(a); printf("反转后是:%s",a); }
这段代码存在一些问题,gets函数已经被弃用,应该改用fgets或者scanf等安全的输入函数。此外,在输入字符串时没有限制长度,可能会导致缓冲区溢出。另外,reverse函数没有对空字符串进行处理,可能会导致程序崩溃。以下是修正后的代码:
```
#include <stdio.h>
#include <string.h>
void reverse(char *str) {
if (str == NULL || *str == '\0') { // 处理空字符串
return;
}
int len = strlen(str);
char *start = str;
char *end = str + len - 1;
char temp;
while (start < end) {
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char a[100];
printf("输入句子:");
fgets(a, sizeof(a), stdin); // 使用fgets函数读取输入
printf("原始字符串是:%s", a);
reverse(a);
printf("反转后是:%s", a);
return 0;
}
```
阅读全文