微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何清除已经在C编程中使用过的String的内容?

如何解决如何清除已经在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 举报,一经查实,本站将立刻删除。