如何解决如何清除已经在C编程中使用过的String的内容?
我想重用我创建的相同字符串并存储其他内容。程序不接受第二次显示错误的字符串输入。我尝试分配变量,即string1 [] = NULL,但是没有用。
#include <stdio.h>
#include <stdlib.h
int main(int argc,char const *argv[])
{
char string1[15];
printf("\n\n\n\nEnter a string containing only alphabets\n: ");
scanf("%[a-z]",string1);
printf("%s",string1);
printf("\nEnter another string that contains characters other than the alphabets: ");
scanf("%[^a-z]",string1);
printf("%s\n End of the program!!!\n\n",string1);
return 0;
}
输出如下...
Enter a string containing only alphabets
asdf
asdf.
Enter another string that contains characters other than the alphabets: 12345
1235
1235 //The program here keeps on accepting numbers and aborts it only when I type exit...
1235
exit
12345
1235
1235
1235
End of the program!!!
Abort trap: 6
而且,编译器发出的“中止陷阱:6”是什么意思?
解决方法
行
scanf("%[^a-z]",string1);
将扫描任何内容,甚至换行符,仅当您键入任何小写字母时,它才会停止。尝试输入结尾处包含字母的内容:
123124ahhh!
它将显示123124,而您无需退出。
但是,如果要在按Enter键后读取字符串,请将行更改为:
scanf("%[^a-z\n]",string1);
但是,在输入的每个字符串之后总会有一个'\ n',该字符串会留给下一次阅读,并且可能会引起麻烦...您可以通过在后面加上一个%* c来摆脱该'\ n' scanfs,代表“处理下一个字符”。
scanf("%[^a-z]%*c",string1);
和
scanf("%[^a-z\n]%*c",string1);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。